
LeetCode
Leetcode前300题
liufeng2023
日拱一卒
展开
-
65-LeetCode29. 两数相除
class Solution {public: int divide(int x, int y) { using ll = long long; vector<ll> exp; bool is_minus = false; if(x < 0 && y >0 || x > 0 && y < 0) is_minus = true; ll a = ..原创 2022-04-24 23:03:44 · 262 阅读 · 0 评论 -
32-LeetCode27. 移除元素
解题思路:双指针;class Solution {public: int removeElement(vector<int>& nums, int val) { int k = 0; for(int i = 0; i < nums.size(); i++) { if(nums[i] != val) { nums[k++] = nums[.原创 2022-04-21 19:07:44 · 71 阅读 · 0 评论 -
32-LeetCode26. 删除有序数组中的重复项
解题思路:双指针做法class Solution {public: int removeDuplicates(vector<int>& nums) { int k = 0; for(int i = 1; i < nums.size(); i++) { if(nums[i] != nums[i-1]) { nums[++k] = num.原创 2022-04-21 17:17:24 · 75 阅读 · 0 评论 -
28-LeetCode25. K 个一组翻转链表
class Solution {public: ListNode* reverseKGroup(ListNode* head, int k) { auto dummy = new ListNode(-1); dummy->next = head; for(auto p = dummy;;) { //每次循环,判断后面是否够k个 auto q = p; ..原创 2022-04-20 21:15:05 · 224 阅读 · 0 评论 -
27-LeetCode22-24:22. 括号生成&23. 合并K个升序链表&24. 两两交换链表中的节点
22. 括号生成括号问题思路:(通用)任意前缀中,左括号数量 >= 右括号数量;左右括号数量相等;使用dfs:左括号数量 <= n即可;右括号数量 <= n && 左括号数量 > 右括号数量class Solution {private: vector<string> res;public: vector<string> generateParenthesis(int n) {原创 2022-04-20 21:14:53 · 133 阅读 · 0 评论 -
19-LeetCode21. 合并两个有序链表
解题思路:使用dummy节点。class Solution {public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { auto dummy = new ListNode(-1), tail = dummy; while(list1 && list2) { if(list1->val < list2->v.原创 2022-04-20 08:06:57 · 93 阅读 · 0 评论 -
18-LeetCode20. 有效的括号
解题思路:使用栈;使用ascll码进行判断,匹配括号的ascll码最多差2;class Solution {public: bool isValid(string s) { stack<char> sk; for(auto& c : s) { if(c == '(' || c == '{' || c == '[') sk.push(c); else .原创 2022-04-20 08:06:22 · 69 阅读 · 0 评论 -
17-LeetCode19. 删除链表的倒数第 N 个结点
解题思路:定义一个dummy指针;(要考虑头结点,最好是有dummy节点)找到要删除的节点的前一个节点—也就是导师k+1个节点。class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { auto dummy = new ListNode(-1); dummy->next = head; int k = 0; for(aut.原创 2022-04-20 08:06:05 · 81 阅读 · 0 评论 -
16-LeetCode15. 三数之和
双指针;class Solution {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++) { .原创 2022-04-20 08:05:30 · 89 阅读 · 0 评论 -
15-LeetCode16. 最接近的三数之和
双指针;class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); pair<int,int> res(INT_MAX, INT_MAX); for(int i = 0; i < nums.size(); i++) { .原创 2022-04-19 21:06:30 · 110 阅读 · 0 评论 -
14-LeetCode18. 四数之和
双指针做法;class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); vector<vector<int>> res; for (int i = 0; i < nums.size(); i++) .原创 2022-04-19 20:34:49 · 82 阅读 · 0 评论 -
5—LeetCode17. 电话号码的字母组合
LeetCode17. 电话号码的字母组合dfs问题class Solution {private: vector<string> ans; const string str[10] = { "","", "abc","def", "ghi","jkl", "mno","pqrs", "tuv","wxyz" };public: vector<string原创 2022-04-18 23:35:51 · 91 阅读 · 0 评论