LeetCode 101 刷题 - (2) 第二章 玩转双指针
LeetCode 167 两数之和 || - 输入有序数组
167. 两数之和 II - 输入有序数组 - 力扣(LeetCode)
class Solution {
public:vector<int> twoSum(vector<int>& numbers, int target) {int n = numbers.size();int l = 0;int r = n-1;while(l < r){if(numbers[l] + numbers[r] == target){break;}else if(numbers[l] + numbers[r] > target){r --; }else{l++;}}return vector<int>{l+1, r+1};}
};
LeetCode 88 合并两个有序数组
88. 合并两个有序数组 - 力扣(LeetCode)
简单的方法
class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {// 一种很简单的方法if(m == 0){for(int i=0;i<m+n;i++){nums1[i] = nums2[i];}}else if(n == 0){}else{int k = 0;for(int i = m; i< m+n ; i++){nums1[i] = nums2[k];k++;}sort(nums1.begin(), nums1.end());}}
};
双指针
class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {// 使用双指针int i = m-1;int j = n-1;int g = m+n-1;//遍历while(i>=0 && j >=0){if(nums1[i] < nums2[j]){nums1[g] = nums2[j];g--;j--;}else{nums1[g] = nums1[i];g--;i--;}}// 如果 nums2 还有剩余while(j >= 0){nums1[g] = nums2[j];j--;g--;}}
};
LeetCode 76 最小覆盖子串
76. 最小覆盖子串 - 力扣(LeetCode)
todo
LeetCode 142 环形链表 ||
struct ListNode {int val;ListNode * next;ListNode(int x): val(x), next(nullptr){}};class Solution {
public:ListNode *detectCycle(ListNode *head) {// 使用的是哈希集合unordered_set hash_set;ListNode *p = head;while(p){p = p->next;}}
};