![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode刷题笔记
文章平均质量分 53
Lucas-hao
技术宅拯救世界!
展开
-
71. 简化路径(LeetCode)
题目描述给你一个字符串 path ,表示指向某一文件或目录的Unix 风格绝对路径(以 ‘/’ 开头,请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。请注意,返回的 规范路径 必须遵循下述格式:始终以斜杠 ‘/’ 开头。两个原创 2021-04-08 23:12:44 · 143 阅读 · 0 评论 -
81. 搜索旋转排序数组II(LeetCode)
题目描述已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]原创 2021-04-07 13:24:15 · 152 阅读 · 0 评论 -
80. 删除有序数组中的重复项II(LeetCode)
题目描述给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplica原创 2021-04-06 15:01:39 · 161 阅读 · 0 评论 -
5706. 句子相似性III(LeetCode第49场双周赛)
题目描述一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,"Hello World" ,"HELLO" ,"hello world hello world" 都是句子。每个单词都 只 包含大写和小写英文字母。如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的 。比方说,sentence1 = "Hello my name is Jane" 且 sente原创 2021-04-04 18:23:14 · 358 阅读 · 0 评论 -
1143. 最长公共子序列(LeetCode)
题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列 的长度。如果不存在公共子序列 ,返回 0 。一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = “abcde”, text2 = “ac原创 2021-04-03 10:23:36 · 61 阅读 · 0 评论 -
面试题 17.21. 直方图的水量(LeetCode)
题目描述给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6题解思路:当前位置能储存的水量取决于左右两边遇到的最大值中的最小值(min(leftTop, rightTop))。方法:双指针。一个左指针,一个右指针。左指针小于右指针,当前位置可以存水,大小为leftTop-left,然后右移左指针,更新leftTop。同理,右指针小于左指针,当前位置可以存储righ原创 2021-04-02 17:19:51 · 115 阅读 · 0 评论 -
10. 正则表达式匹配(LeetCode)
题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素。所谓匹配,是要涵盖整个字符串 s的,而不是部分字符串。示例 4:输入:s = "aab" p = "c*a*b"输出:true解释:因为 '*' 表示零个或多个,这里 'c'为 0 个, 'a'被重复一次。因此可以匹配字符串 "aab"。题解使用动态规划方法。代码bool charMatch(char s, ch原创 2021-04-01 20:37:25 · 163 阅读 · 0 评论 -
61.旋转链表
题目描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109题解本题不难,只需要找到newHead和newTail的位置,原创 2021-03-27 10:03:59 · 61 阅读 · 0 评论 -
6.z-字形变换(LeetCode)
题目描述将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。题解观察法。通过对数组下标的观察找到规律。我们观察Z字形的一个转折。0 2n-21 2n-3 2原创 2021-01-20 21:58:30 · 140 阅读 · 0 评论 -
69. X的平方根
暴力解法int mySqrt(int x){ for (int i = 0; i <= x; i++) if ((long long)i * i > x) return i - 1; else if ((long long)i * i == x) return i; return 0;}二分法int mySqrt(int x){ int l = 0, r = x, ans = 0; while (..原创 2021-01-19 18:27:54 · 76 阅读 · 0 评论 -
15. 三数之和
题目描述给你一个包含 nnn 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,ca,b,ca,b,c ,使得 a+b+c=0a + b + c = 0a+b+c=0?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]题解一道经典的算法题。思原创 2021-01-19 17:46:57 · 65 阅读 · 0 评论 -
11. 盛最多水的容器(LeetCode)
解法:双指针定义两个左右指针,获取其中较小的指针,将较小指针向中间移动,重新获取两个指针中的较小者,然后比较当前区域大小与移动后区域大小并进行赋值。重复以上操作直到两个指针相遇。int maxArea(int *height, int heightSize){ if (heightSize == 0 && heightSize == 1) return 0; int left = 0, right = heightSize - 1; int min = hei原创 2021-04-03 10:40:23 · 349 阅读 · 0 评论