您的位置:首页 > 健康 > 美食 > 大连网络营销_国内优秀网页_优化方案电子版_谷歌paypal官网

大连网络营销_国内优秀网页_优化方案电子版_谷歌paypal官网

2024/12/28 5:59:39 来源:https://blog.csdn.net/qq_74276498/article/details/144401100  浏览:    关键词:大连网络营销_国内优秀网页_优化方案电子版_谷歌paypal官网
大连网络营销_国内优秀网页_优化方案电子版_谷歌paypal官网

1. NC140 排序

题目连接

  1. 快排
#include <vector>
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 将给定数组排序* @param arr int整型vector 待排序的数组* @return int整型vector*/vector<int> MySort(vector<int>& arr) {// write code herequick_sort(arr, 0, arr.size() - 1);return arr;}void quick_sort(vector<int>& arr, int left, int right){if (left >= right) return;int l = left, r = right;int k = l;while (l < r){while (l < r && arr[r] >= arr[k]) r--;while (l < r && arr[l] <= arr[k]) l++;swap(arr[l], arr[r]);}swap(arr[l], arr[k]);quick_sort(arr, left, l - 1);quick_sort(arr, l + 1, right);}
};

还有快排优化,请看这里
快排优化联系
2. 归并排序

#include <vector>
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 将给定数组排序* @param arr int整型vector 待排序的数组* @return int整型vector*/vector<int> MySort(vector<int>& arr) {// write code heremerge_sort(arr, 0, arr.size() - 1);return arr;}void merge_sort(vector<int>& arr, int left, int right){if (left >= right) return;int mid = (right - left) / 2 + left;merge_sort(arr, left, mid);merge_sort(arr, mid + 1, right);merge(arr, left, mid, right);}void merge(vector<int>& arr, int left,int mid, int right){vector<int> temp(right - left + 1, 0);int k = 0, i = left, j = mid + 1;while (i <= mid && j <= right){if (arr[i] < arr[j]) temp[k++] = arr[i++];else temp[k++] = arr[j++];}while (i <= mid) temp[k++] = arr[i++];while (j <= right) temp[k++] = arr[j++];for (int m = 0, n = left; n <= right; m++, n++){arr[n] = temp[m];}}
};

2.

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

示例 1:

输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

  1. 方法一——哈希
class Solution {
public:int sumNum(int n){int sum = 0;while (n){int x = n % 10;sum += x * x;n /= 10;}return sum;}bool isHappy(int n) {unordered_set<int> hash;int happyNum = sumNum(n);hash.insert(happyNum);while (happyNum != 1){int temp = sumNum(happyNum);if (hash.count(temp) > 0){return false;}hash.insert(temp);happyNum = temp;}return true;}
};
  1. (优化)方法二——快慢双指针
class Solution {
public:int sumNum(int n){int sum = 0;while (n){int x = n % 10;sum += x * x;n /= 10;}return sum;}bool isHappy(int n) {int slow = n, fast = n;do{slow = sumNum(slow);fast = sumNum(sumNum(fast));}while(slow != fast);return fast == 1;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com