自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 代码随想录算法训练营第8天 | 题目344.反转字符串、541. 反转字符串II、卡码网:54.替换数字

花式反转主要是对规则的模拟,需要注意,如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。都是对k个字符反转,其操作是相同的。当剩余字符少于 k 个,则end为ch.length - 1,当剩余字符小于 2k 但大于或等于 k 个,end为ch.length - 1。然后通过双指针将字符串扩充,扩充方式如下,采用从前向后的扩充,可以避免后续的移动。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。

2024-06-19 17:26:10 250

原创 代码随想录算法训练营第7天 | 题目454.四数相加II 、 383. 赎金信 、15. 三数之和 、18. 四数之和

四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n。这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。

2024-06-19 16:16:01 646

原创 代码随想录算法训练营第6天 | 题目 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

其包括一个key和一个value,本题中key存放值,value为下标,map存放遍历过的数组值。需要把字符映射到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。依然是使用hash表,可以将target分解为两个数的合,针对hash中一位的数值,寻找target减去其得到的数在hash中是否存在。那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。

2024-06-19 10:10:27 540

原创 代码随想录算法训练营第4天 | 题目 24. 两两交换链表中的节点 、 19.删除链表的倒数第N个节点 、 142.环形链表II

这就意味着,从头结点出发一个指针,从相遇节点 也出发一个指针,这两个指针每次只走一个节点, 那么当这两个指针相遇的时候就是 环形入口的节点。环形链表的判断应该是双指针,快慢指针都进入环中,当两个指针相等是则有环,两个指针之间的距离是环的大小。如何确定快慢指针在环中一定会相遇,如果slow每次移动一位,快指针一次移动两位,fast相对slow每次移动一位,一定可以追上。简单来说,就是求两个链表交点节点的指针。同样使用双指针,做到一次遍历,设计快指针为慢指针的n+1位置,直到快指针指向null。

2024-06-08 19:19:46 887

原创 代码随想录算法训练营第3天 | 题目:203.移除链表元素、 707.设计链表 、206.反转链表

第一次递归返回时,将 1 -> 2 变为 5 -> 4 -> 3 -> 2 -> 1,并将 1 的 next 设为 null。插入后,新节点将成为链表的第一个节点。第二次递归返回时,将 2 -> 3 变为 5 -> 4 -> 3 -> 2,并将 2 的 next 设为 null。第三次递归返回时,将 3 -> 4 变为 5 -> 4 -> 3,并将 3 的 next 设为 null。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。

2024-06-07 15:58:20 811

原创 代码随想录算法训练营第2天 | 数组题目977、 209、 59

1.二分法二分法的核心思想是循环不变量原则,只有在循环中坚持对区间的定义,才能清楚的把握循环中的各种细节。需要注意左闭右闭合左闭右开的区分。2.双指针法即快慢指针,使用一个循环实现两个循环的任务,数组是连续的空间,只能覆盖不能删除,在进行删除数组中某个元素的任务时,快指针进行遍历,不出现对应值时,慢指针值等于快指针值,当出现对应值时,慢指针在这次遍历中不会跟随快指针,即不执行相等,造成延后一位,是得后面的元素覆盖要删除的元素直到最后一位。3.滑动窗口。

2024-06-06 17:19:19 818

原创 代码随想录算法训练营第1天 | 题目704、题目27

35题和702差不多,也是使用二分查找,不同之处在于它考察在未寻找到val时的left和right的关系。这也是薄弱点,我对具体的动态变化不太清楚:寻找过程的变化mid: 1right: 0mid: 0left: 134题没想出来,解题是利用两次二分查找。分别查找左右边界,查找左边界为第一次出现的边界,在查寻到第一次的值时赋值,并向左更新right,确保找到的是第一次出现的值。查询右边界则是找最后出现的值,向右更新left,确保是最后值。

2024-06-05 17:41:16 935

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除