NC409. k-dis数对
描述
示例1
输入:
[3,1,4,6,5],3
输出:
2
说明:
(4,1),(6,3)示例2
输入:
[3,1,4,6,4],3
输出:
2
说明:
(4,1) (6,3) 虽然有两个 (4,1) 数对,但只统计不同的数对C++ 解法, 执行用时: 35ms, 内存消耗: 3776KB, 提交时间: 2022-08-06
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param k int整型 * @return int整型 */ int k_dis(vector<int>& nums, int k) { // write code here sort(nums.begin(),nums.end()); int i=0,j=0,z=0; while(j<nums.size()) { if(nums[j]-nums[i]<k) { j++; }else if(nums[j]-nums[i]==k&&nums[j]!=nums[j-1]) { z++; j++; }else if(nums[j]-nums[i]>k) { i++; }else{ j++; } } return z; } };
C++ 解法, 执行用时: 35ms, 内存消耗: 3804KB, 提交时间: 2022-08-04
class Solution { public: int k_dis(vector<int>& nums, int k) { sort(nums.begin(), nums.end()); int i = 0, j = 0, z = 0; while (j < nums.size()) { if (nums[j] - nums[i] < k) { j++; } else if (nums[j] - nums[i] == k && nums[j] != nums[j - 1]) { z++; j++; } else if (nums[j] - nums[i] > k) { i++; } else { j++; } } return z; } };
C++ 解法, 执行用时: 39ms, 内存消耗: 3760KB, 提交时间: 2022-07-14
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param k int整型 * @return int整型 */ int k_dis(vector<int>& nums, int k) { // write code here sort(nums.begin(), nums.end()); int i = 0, j = 0, res = 0; while(j < nums.size()){ if(nums[j] - nums[i] < k){ j ++; } else if(nums[j] - nums[i] == k && nums[j] != nums[j - 1]){ res ++; j ++; }else if(nums[j] - nums[i] > k){ i ++; }else{ j ++; } } return res; } };
C++ 解法, 执行用时: 45ms, 内存消耗: 3784KB, 提交时间: 2022-07-19
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param k int整型 * @return int整型 */ int k_dis(vector<int>& nums, int k) { // write code here sort(nums.begin(), nums.end()); nums.erase(unique(nums.begin(), nums.end()), nums.end()); int cnt = 0; for (auto iter = nums.begin(); iter != nums.end(); iter++) { if (binary_search(nums.begin(), nums.end(), *iter + k)) { cnt++; } } return cnt; // unordered_set<int> st; // for (auto num : nums) { // st.insert(num); // } // int cnt = 0; // for (auto iter = st.begin(); iter != st.end(); iter++) { // if (st.find(*iter + k) != st.end()) { // cnt++; // } // } // return cnt; } };
C++ 解法, 执行用时: 52ms, 内存消耗: 6324KB, 提交时间: 2022-07-11
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param k int整型 * @return int整型 */ int k_dis(vector<int>& nums, int k) { // write code here unordered_set<int> st; for(int num:nums){ st.insert(num); } int res=0; for(auto it=st.begin();it!=st.end();++it){ if(st.find(*it+k)!=st.end()){ ++res; } } return res; } };