数组章节
文章平均质量分 96
数组
放下华子我只抽RuiKe5
代码如诗,逻辑如词,用指尖编制世界的模样。
展开
-
代码随想录—力扣算法题:704二分查找.Java版(示例代码与导图详解)
其实主要就是对区间的定义没有理解清楚,在循环中没有始终坚持根据查找区间的定义来做边界处理。 区间的定义就是不变量,那么在循环中坚持根据查找区间的定义来做边界处理,就是循环不变量规则。 本篇根据两种常见的区间定义,给出了两种二分法的写法,每一个边界为什么这么处理,都根据区间的定义做了详细介绍。// 如果目标值在中间位置,返回下标 if(nums [ mid ] == target) return mid;原创 2023-08-02 22:01:03 · 339 阅读 · 0 评论 -
代码随想录—力扣算法题:27移除元素.Java版(示例代码与导图详解)
定义两个指针:快指针和慢指针。快指针用于遍历数组,慢指针用于指示当前非目标元素的位置。初始化快指针和慢指针,都指向数组的起始位置。遍历数组,当快指针指向的元素等于目标值时,快指针向后移动一位;否则,将快指针指向的元素复制到慢指针的位置,并同时将快指针和慢指针都向后移动一位。重复步骤2,直到快指针遍历完整个数组。返回慢指针的位置作为新数组的长度。// 快慢指针 int slowIndex = 0;= val) {原创 2023-08-04 18:32:36 · 294 阅读 · 0 评论 -
代码随想录—力扣算法题:977有序数组的平方.Java版(示例代码与导图详解)
对于这个问题,我们可以使用双指针的方法来解决。由于输入的数组已经是按非递减顺序排序的,**我们可以使用两个指针分别指向数组的开头和结尾,比较两个指针指向的元素的平方大小,然后将较大的平方值放入结果数组的末尾,并将相应的指针向中间移动。**重复这个过程直到两个指针相遇。 通过比较每个元素的平方值的大小,将较大的值放入结果数组,并不断向中间移动指针,最终得到按非递减顺序排序的每个数字的平方组成的新数组。 我们也可以写一个测试方法,输入一个非递减顺序排序的数组,来验证代码的正确性。原创 2023-08-07 19:48:49 · 166 阅读 · 0 评论 -
代码随想录—力扣算法题:209长度最小的子数组.Java版(示例代码与导图详解)
使用滑动窗口方法可以解决这个问题。定义两个指针,分别表示滑动窗口的左右边界。初始化左指针和右指针都指向数组的第一个元素。然后,移动右指针,将元素逐个加到滑动窗口的和中,直到滑动窗口的和大于等于目标值s为止。当滑动窗口的和大于等于目标值s时,记录当前滑动窗口的长度,并更新最小长度。然后,移动左指针,将滑动窗口的左边界向右移动一位,并从滑动窗口的和中减去左边界的元素。重复步骤3到步骤5,直到右指针达到数组的末尾。返回最小长度,如果不存在满足条件的子数组,则返回0。原创 2023-08-08 21:22:18 · 134 阅读 · 0 评论 -
代码随想录—力扣算法题:59螺旋矩阵II.Java版(示例代码与导图详解)
首先,定义变量loop表示当前的螺旋圈数,初始值为 0。螺旋圈数表示当前正在填充的圈数,总共会填充 n/2 圈。然后,创建一个大小为 n×n 的空矩阵res,用来存储结果。开始循环,每次循环填充一圈。循环的条件是,保证循环次数不超过 n/2。在循环中,首先是从左到右填充上侧的行。使用变量j作为列的索引,从start开始,一直到(因为最后一列由右侧从上到下填充),逐个填充数字count,并将count加 1。接着,从上到下填充右侧的列。使用变量i作为行的索引,从start开始,一直到。原创 2023-08-10 18:25:22 · 294 阅读 · 0 评论