DataWhale—LeetCode腾讯精选50题EverydayTa
文章平均质量分 60
偷闰土的猹
这个作者很懒,什么都没留下…
展开
-
Task17——The End
本文链接:344. 反转字符串思路:双指针,两个指针,一个从前向后走,一个从后向前走,交换位置。代码:class Solution{public: void reverseString(vector<char> &s) { int i = 0, j = s.size() - 1; while (i < j) { swap(s[i], s[j]); j原创 2021-01-29 18:39:42 · 71 阅读 · 0 评论 -
Task16
本文链接:237. 删除链表中的节点思路:把要删除的节点的下一个节点的值赋给该节点,删除下一个节点,在令该节点的下一位指向下一位的下一位。class Solution{public: void deleteNode(ListNode *node) { node->val = node->next->val; node->next = node->next->next; }};238. 除自原创 2021-01-28 21:04:30 · 89 阅读 · 0 评论 -
Task15
本文链接:231 2的幂思路:利用位运算,利用&,两者同为1才是1看下面的图片吧代码:class Solution{public: bool isPowerOfTwo(int n) { if (n <= 0) return false; if (n & (n - 1) == 0) //& 两者同1都为1 return true; retu原创 2021-01-27 18:48:03 · 77 阅读 · 0 评论 -
Task14
本文链接:215. 数组中的第K个最大元素思路:用一下排序,返回数组的倒数第K个元素手撕了一下快排代码:class Solution{public: int findKthLargest(vector<int> &nums, int k) { QuickSort(nums, 0, nums.size()); return nums[nums.size() - k]; } void QuickSort原创 2021-01-26 19:43:16 · 70 阅读 · 0 评论 -
Task13
本文链接:160 相交链表思路:利用两个指针来进行遍历,P1先从l1开始然后l2,p2先从l2开始然后l1。如果有重合的,后面的元素一定是重合的。代码:class Solution{public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode *a = headA, *b = headB; while (a != b)原创 2021-01-25 18:54:58 · 95 阅读 · 0 评论 -
Task12
本文链接:146. LRU 缓存机制思路:哈希表+双向链表实现代码:class DLinkedNode {public: int key; int val; DLinkedNode* pre; DLinkedNode* next; DLinkedNode() : key(0), val(0), pre(nullptr), next(nullptr) {} DLinkedNode(int _key, int _val) : key(_key)原创 2021-01-23 21:43:32 · 94 阅读 · 0 评论 -
Task11
本文链接:136 只出现一次的数字思路:利用位运算,看到这个题想到了我之前做的一道题,于是想着位运算可能简单一点。利用 异或运算,^ (二进制,各位不同取1,相同取0.) 0=a ^ a ,a=0 ^ a, a=a^ b ^ b代码:class Solution{public: int singleNumber(vector<int> &nums) { int result = 0; for (int i = 0;原创 2021-01-22 21:20:30 · 103 阅读 · 0 评论 -
Task10
本文链接:121 买卖股票的最佳时机思路1:暴力法 会TLE双层循环,第一层记录买入,第二层记录卖出,求出最大利润。代码:class Solution{public: int maxProfit(vector<int> &prices) { int BuyIn = 0, SellOut = 0; int Profit = 0; if(prices.empty()) retur原创 2021-01-21 21:48:45 · 146 阅读 · 0 评论 -
Task09
本文链接:88 合并两个有序数组思路:双指针法从后向前,p1后面有m+n-p1-1个元素,在任意时刻nums1有m-1-p1个元素被放入后面,而nums2中有n-1-p2个元素被放入后面。而(m+n-p1-1>m-1-p1+n-1-p2)==>(p2>-1)恒成立,所以从后面拿出的元素不会把前面的覆盖。ps:temp = nums2[p2- -]等价于temp=nums2[p2]; p2=- -;代码:class Solution{public: vo原创 2021-01-20 21:20:09 · 86 阅读 · 0 评论 -
Task08
本文链接:062、不同路径思路:方法一:每个方格的路线只有左面或者上面,所以给起始位置路径计做0,第一行和第一列的每个位置路径计做1,其他位置,只有上面和左面可以到达,因此,我们只计算左面和上面位置路径的和。即(i,j)的路径=(i-1,j)+(i,j-1)的路径和。class Solution{public: int uniquePaths(int m, int n) { vector<vector<int>> PathMap(m原创 2021-01-19 21:16:54 · 68 阅读 · 0 评论 -
Task07
054.螺旋矩阵思路:按照题目要求,一圈一圈的往里遍历**代码:class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if(matrix.empty() || matrix[0].empty()) return {}; vector<int> res; int m = matri原创 2021-01-18 20:58:39 · 61 阅读 · 0 评论 -
Task06
43.字符串相乘思路:模拟真实乘法,不过先不进位,最后统一进位。代码:class Solution{public: string multiply(string num1, string num2) { string result = ""; if (num1 == "0" || num2 == "0") return "0"; int s1 = num1.size(), s2 = num2.size(原创 2021-01-17 21:24:03 · 111 阅读 · 1 评论 -
Task05——采用C++
第23题 合并K个升序链表思路:采用递归,由于之前已经做过两个链表的合并(可见上一个),所以K个链表其实就是两个链表的升级版,只需要让第二个以及以后的链表与第一个相组合,组合结果加入第一个链表,最后返回第一个链表就可以。C++代码:class Solution{public: ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if (l1 == nullptr) return原创 2021-01-16 20:20:06 · 124 阅读 · 1 评论 -
Task04——采用C++
1原创 2021-01-14 19:26:08 · 86 阅读 · 0 评论 -
Task03——采用C++
011 盛最多水的容器LeetCode链接https://leetcode-cn.com/problems/container-with-most-water/思路:C++代码://假装有代码,代码改天弄上来吧014 最长公共前缀LeetCode:https://leetcode-cn.com/problems/longest-common-prefix/思路:第一种是暴力法,直接拿第一个字符串每一位与后面的字符串比较。时间复杂度有点高,但是也不会TLE。C++代码://初.原创 2021-01-13 21:53:19 · 78 阅读 · 0 评论 -
Task02——采用C++
7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2exp31, 2exp31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-2^31 <= x <= 2^31 - 1原创 2021-01-12 22:15:40 · 144 阅读 · 0 评论 -
Task01——采用C++
Task01题号2:两数相加题号:2难度:中等https://leetcode-cn.com/problems/add-two-numbers/ 3给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:(2 -> 4 -> 3) + (5 -> 6 -&g原创 2021-01-11 20:59:32 · 118 阅读 · 0 评论