Leetcode笔记
记录个人刷Leetcode时学到的知识
岁依
这个作者很懒,什么都没留下…
展开
-
【Leetcode】82.删除排序链表中的重复元素Ⅱ
1.题目描述 题目原链接:remove-duplicates-from-sorted-list-ii 2.解题思路及算法 建一个「虚拟头节点」dummy 以减少边界判断,往后的答案链表会接在 dummy 后面 使用 tail 代表当前有效链表的结尾 通过原输入的 head 指针进行链表扫描 确保进入外层循环时 head 不会与上一节点相同,插入时机: 1.head 已经没有下一个节点,head 可以被插入 2.head 有一下个节点,但是值与 head 不相同,head 可以被插入 我tm怎么就想不原创 2021-03-29 22:21:57 · 91 阅读 · 0 评论 -
【Leetcode】83.删除排序链表中的重复元素
1.题目描述 题目原链接:remove-duplicates-from-sorted-list 2.解题思路及算法 创建dump链表代替头节点,初始化时将dump->val赋值为不等于head->val的值(题目有指明链表的范围是[-100,100]) 定义*cop,用作保存dump链表的头节点地址 比较dump->val与head->val,如果不相等则更改dump->next为head,同时dump后移 最后返回cop->next(因为cop指向的是初始定义的原创 2021-03-29 21:40:08 · 70 阅读 · 0 评论 -
【Leetcode】88.合并两个有序数组
1.题目描述 题目原链接:merge-sorted-array 2.解题思路及算法 题目说了nums1的空间>=m+n,故直接从最后一位开始,比较nums1和nums2中最大的数,把更大的交换到进nums1最后,同时指针减一 最后对nums2单独处理 我他喵怎么就想不出这么妙的算法!! class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums原创 2021-03-26 20:21:01 · 70 阅读 · 0 评论 -
【Leetcode】70.爬楼梯
1.题目描述 题目原链接:climbing-stairs 2.解题思路及算法 可采用递归,但效率太低!!效率低!! 经观察发现为斐波那契数列,遂问题变为求解斐波那契数列的指定项 class Solution { public: int climbStairs(int n) { if (n <= 1) return n; int dp[3]; dp[1] = 1; dp[2] = 2; for (int i原创 2021-03-25 22:14:38 · 60 阅读 · 0 评论 -
【Leetcode】69.x的平方根
1.题目描述 题目原链接:sqrtx 2.解题思路及算法 双指针折半查找 class Solution { public: int mySqrt(int x) { int right = x/2 + 1; int left = 1; int mid = (right + left)/2; while(right >= left){ mid = (right + left)/2;原创 2021-03-25 22:11:05 · 75 阅读 · 0 评论 -
【Leetcode】67.二进制求和
1.题目描述 题目原链接:add-binary 2.解题思路及算法 首先让两个字符串等长(补‘0’) 从末位相加,满2则模2进1 第一位单独相加,进位则添‘1’ class Solution { public: string addBinary(string a, string b) { while(b.length() > a.length()) a = '0' + a; while(a.length() > b.len原创 2021-03-23 21:37:18 · 68 阅读 · 0 评论 -
【Leetcode】66.加一
1.题目描述 题目原链接:plus-one 2.解题思路及算法 从末位开始加一 遇10进位,否则直接返回 如果跑完循环说明整体有进位,需要在数组起点添加一个“1” class Solution { public: vector<int> plusOne(vector<int>& digits) { for(int i = digits.size() - 1;i >= 0;i--){ digits[i]++;原创 2021-03-23 20:51:40 · 61 阅读 · 0 评论 -
【Leetcode】38.外观数列
1.题目描述 题目原链接:count-and-say 2.解题思路及算法 采用递归,逐层求解 使用循环遍历字符串,进行描述 class Solution { public: string countAndSay(int n) { if (n == 1) return "1"; string pre = countAndSay(n-1); string rec = ""; int i = 0,coun原创 2021-03-23 19:34:56 · 46 阅读 · 0 评论 -
【Leetcode】35.搜索插入位置/C++
【Leetcode】35.搜索插入位置/C++1.题目描述2.解题思路及算法2.1 顺序查找2.2 折半查找(二分查找) 1.题目描述 题目原链接:search-insert-position 2.解题思路及算法 2.1 顺序查找 定义变量 i ,从前到后遍历数组,当target大于等于nums[i]时则返回 i 的值 class Solution { //顺序查找 public: int searchInsert(vector<int>& nums, int ta原创 2021-01-15 22:35:20 · 128 阅读 · 0 评论 -
【Leetcode】53.最大子序和/C语言
暴力算法、贪心算法、动态规划、分治算法求解原创 2020-12-26 22:01:20 · 116 阅读 · 0 评论