您的位置:首页 > 新闻 > 资讯 > dreamweaver手机版_南宁手机网站开发策划_nba排名赛程_游戏推广代理加盟

dreamweaver手机版_南宁手机网站开发策划_nba排名赛程_游戏推广代理加盟

2024/10/7 10:09:30 来源:https://blog.csdn.net/qq_43818724/article/details/142723641  浏览:    关键词:dreamweaver手机版_南宁手机网站开发策划_nba排名赛程_游戏推广代理加盟
dreamweaver手机版_南宁手机网站开发策划_nba排名赛程_游戏推广代理加盟

记录部分手撕题目,给出核心代码,一般是从头开始写

1、相交链表

class Solution { // lc 160
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode *A = headA, *B = headB;while (A != B) {A = A != nullptr ? A->next : headB;B = B != nullptr ? B->next : headA;}return A; // 交点或者空指针}
};

2、三数之和

class Solution { // lc 15
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;sort(nums.begin(), nums.end()); // 排序后用双指针for (int i = 0; i < nums.size(); i++) {if (nums[i] > 0) return res; // 超出范围if (i > 0 && nums[i] == nums[i - 1]) continue;int left = i + 1;int right = nums.size() - 1; // 双指针,结合去重while (left < right) { // 有两个数,所以无等号if (nums[i] + nums[left] + nums[right] < 0) left++;else if (nums[i] + nums[left] + nums[right] > 0) right--;else {res.push_back({nums[i], nums[left], nums[right]});while (right > left && nums[right] == nums[right - 1]) right--;while (right > left && nums[left] == nums[left + 1]) left++;// 找到答案后左右收缩right--;left++;}}}return res;}
};

3、数组中第k个最大元素

class Solution {
public:int findKthLargest(vector<int>& nums, int k) {sort(nums.begin(), nums.end());return nums[nums.size() - k]; // 直接排序,时间复杂度O(nlogn)}
};// 提高时间复杂度,快速排序加筛选
class Solution {
public:int findKthLarrgest(vector<int>& nums, int k) {return quickSelect(num, k);}int quickSelect(vector<int>& nums, int k) {int pivot = nums[rand() % nums.size()];vector<int> big, equal, small;for (int num : nums) {if (num > pivot) big.push_back(num);else if (num < pivot) small.push_back(num);else equal.push_back(num); // 去除重复元素}if (k <= big.size()) return quickSelect(big, k); // 第k大的元素在big中if (nums.size() - small.size() < k) return quickSelect(small, k - (nums.size() - small.size())); // 第k大的元素在small中return pivot; // 第k大的元素在equal中,直接返回}
};

版权声明:

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

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