- 博客(8)
- 收藏
- 关注
原创 双指针法练习
第二个剪枝处理的时候 如果这个数大于target 并且后面的数还大于等于0 那说明肯定后面没有解了 就可以解除。注意几个点 第一个 用int会溢出 要用long。注意最后要判断一下cur->next是否为空。注意最后判断的是s[i],别搞错了。注意最后直接返回slow就行了。删除链表的倒数第n个结点。
2023-10-31 19:15:01
397
3
原创 字符串练习
反转字符串使用双指针法。用两次reverse;反转字符串中的单词几个注意地点 最后反转的时候i的范围应该是s,szie()的下一个不然最后一个单词不反转左旋字符串注意一下 reverse是左闭右开的。
2023-10-27 18:08:39
24
原创 哈希表练习
"a" 是一个字符串字面量,它代表一个包含单个字符 'a' 的字符串。'a' 是一个字符字面量,它直接表示字符 'a'。注意迭代器指向的是 key 通过key来找value。这里要注意一件事 就是在就去重的时候要在自己的范围内。注意 map[i] 是value =i的k值。检查是否是异位词得 注意减去的是'a'注意 每次循环的结果。
2023-10-25 21:01:38
25
原创 DAY3打卡
执行过程 因为headnext 一直不为空 就会向下遍历 直到 到最后一个 这是 newhead就等于链表末尾的值 然后 就会执行上一层函数 为执行完的 就是后一个的next 指针指向 前一个 前一个的指针指向空 然后返回 newhead 继续执行 直到 执行到 第一层 这时候 return head。递归写法 首先 写递归终止的条件 就是 如果head直接是空的 那么直接 中止 如果head 的下一个 是空的 说明结束了。注意返回的是虚拟头节点得next head 可能被改变了。
2023-10-17 22:41:29
28
原创 Day2打卡
定义行的起始位置 列的起始位置 然后左闭右开 起始位置是列的起始位置 终止位置就是n-循环次数(举列子 n=5的话 第一次循环 是 0到3 第二次循环是1到2) 类比。思路 首先确定循环次数 loop为N/2;接着定义正在第几次循环looping。时间复杂度 在for 循环中j 从开头到结尾遍历一次 在while循环中。两个for 循环遍历所有长度得数组 时间复杂的是O(N2)用vector的快速排序法 时间复杂度是O(N2)注意点的 小于等于 因为 最后一个值也要做出判断。
2023-10-15 21:16:25
642
原创 Day1打卡
当target 小于中间值的时候 说明要改右边界 因为右边界是闭区间 说明middle 所在的值一定不是要找的值 所以下一次循环的时候就不需要这个值 所以 right = middle -1;而左边闭合则说明,middle所在的值一定不是要找的值,也可以舍弃。当target 小于中间值的时候 说明要改右边界 因为右边界是闭开间 right=middle就可,因为右边不包括,如果等于middle-1那么middle上一个就不会被包括,区间就变成了从左到上上个,就少了值,左边同上。,指向下一个要保留的位置。
2023-10-13 00:26:55
660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人