![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode练习
practice
sixHalf
菜鸟
展开
-
LeetCode 17.电话号码的字母组合
思路:题目要求所有字母组合,由此联想到使用搜索算法,常见的搜索有深搜和广搜,深搜利用递归,广搜一般需要一个队列辅助。本题还可使用广搜,时间复杂度是一样的。原创 2023-08-29 22:19:56 · 71 阅读 · 1 评论 -
LeetCode 16.最接近的三数之和
若sum<target,start++(因为是排过序的,所以每次都是在向目标值靠近,即间距最小)若i,start,end三数之和sum为0 ,直接返回结果。若sum>target,end–(同理,也在缩小间距)选定左边的第一个数i作为定值(会遍历至倒数第三个数)左指针L指向i+1,右指针R指向数组尾部。思路:和三数之和题目类似,使用双指针。原创 2023-08-28 21:41:18 · 65 阅读 · 1 评论 -
LeetCode 15.三数之和
【代码】LeetCode 15.三数之和。原创 2023-08-25 00:01:29 · 53 阅读 · 1 评论 -
LeetCode 12.整数转罗马数字
思路:这道题使用贪心的思路。类比于给客户找零钱,有先给客户找较大金额的币,这样可以减少货币的张数,便于客户核对(虽然局部是最优解,但全局不一定)。同样的这里先满足较大的数字。(这里不使用{},是因为JS对象会自动排序)。题外话:)=>假设要找给客户15块,存在{11,5,1}的面额,按照贪心的思路,得到的结果是11+1+1+1+1(局部最优),是一个解,但全局来看并不是最优解,最优解其实是5+5+5。原创 2023-08-22 21:11:27 · 49 阅读 · 1 评论 -
LeetCode 11.盛水最多的容器
思路:看到题目第一反应是双指针(自己没写出了)。本题可以暴力破解,也可采用双指针的方法。输入:[1,8,6,2,5,4,8,3,7]原创 2023-08-17 22:03:40 · 41 阅读 · 1 评论 -
LeetCode N字型变换
第二步,处理每个分片的第一列的字符 – 逆序,其余斜线上的字符不处理,例如此处’PAYP’ ==>‘YAPP’(逆序的原因是JS没负索引,方便取余运算)。第一列遍历栈,一次存储,后续斜线取余找到对应栈存储。这样实际画出来的N型是关于X轴对称的,所以最后再反转一次stacks栈。每一组字符的数量和变化行数numRows的关系是2*numRows - 2,。思路:使用栈来存储变换后的N字型的每一行。第一步,将字符分片并存储。原创 2023-08-16 21:58:22 · 59 阅读 · 1 评论 -
LeetCode 5. 最长回文子串
思路:采用中心扩散法,遍历字符串,将字符作为回文的中心,向两边移动指针,直到指针所指两个字符不同位置,然后存储这个回文。(注意有奇数中心和双数中心两种)给你一个字符串 s,找到 s 中最长的回文子串。输入:abccbaa,输出:abccba。原创 2023-08-15 20:40:56 · 39 阅读 · 2 评论 -
LeetCode 2.两数相加 -- JavaScript实现
输入l1:[2,4,3],l2:[5,6,4]原创 2023-08-11 22:56:51 · 204 阅读 · 1 评论 -
LeetCode 3.无重复字符的最长子串
例如,‘abcdeawprck’,第一次遇到‘a’时,得到的最长子串是‘abcde’,此时将头指针k移到‘a’上一次出现的位置。每次遇到val in indexMap && indexMap[val]>k,给k的赋值都是当前重复字符的上一次出现索引indexMap[val],意味着从此时的k开始,抹除当前字符的重复限制,继续探索不重复的字符。在比如,abcvbaba,第二次遇到‘b’时,abcv是目前最长的子串,然后k变为‘b’的第一个索引1,也就是从‘c’开始往后寻找,找到‘cvba’,原创 2023-08-14 23:11:34 · 48 阅读 · 0 评论