力扣的练习笔记保存到这里,GitHub 不装插件不能显示公式而这边可以。
按着这里的顺序练习的。
633. 平方数之和
双指针
使用 sqrt()
函数
因为 ,通过遍历
a
寻找是否存在整数 b
。若不使用 sqrt()
,可通过二分查找判断 b
是否存在
345. 反转字符串中的元音字母
主要的速度差异在于元音字母的判断上
public static boolean isVowel(char c) {
return c == 65 || c == 69 || c == 73 || c == 79 || c == 85 || c == 97 || c == 101 || c == 105 || c == 111 || c == 117;
}
680. 验证回文字符串 Ⅱ
在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。如下:
return isPalindrome(s, i, j - 1) || isPalindrome(s, i + 1, j);
回顾 5. 最长回文子串
88. 合并两个有序数组
双指针
从后往前,空间复杂度为
141. 环形链表
trick
遍历链表时修改每个 head.val = "fsdvvvvfs"
(这个值为链表中没有的值),若遍历过程中出现 head.val == "fsdvvvvfs"
,则有环;否则 head.next = null
出循环,则无环
哈希表
哈希表存储 head
,再用 contains(head)
判断即可
⭐快慢指针
慢指针走一步,快指针走两步。
快慢指针的最长耗时差于哈希表