数组专题汇总

迭代

剑指OfferJ03:数组中重复的数字

  • 将数组下标与数组内容对应起来
  • 比较nums[i]和i,交换nums[i]和nums[nums[i]]

二分查找

排序数组中的搜索问题,首先想到 二分法 解决

二分查找汇总
剑指 Offer 53 - II. 0~n-1中缺失的数字
二分查找数组中是否有某节点 704 没有返回插入位置35

  • while(left<=right) //left=right的时候继续循环,此时mid=left=right,此时仍进行循环
    循环结束的条件是(left>right)
  • 插入位置应该时靠后边的那个节点,所以应该是return left(循环结束的条件)

在排序数组中查找元素的第一个和最后一个位置34

  • nums[mid]>/<target的时候更新left,right
  • 相等 两个子函数判断是不是第一个和最后一个
    第一个(nums[mid-1]!=target || mid== 0 )
    最后有一个(nums[mid+1]!=target || mid==size-1)

寻找旋转排序数组中的最小值 153 特定值 33

  • nums[mid]和nums[right]比较,条件left<right 看他是在前边(mid>right)那个部分还是 后边那个部分(mid>right)= 直接返回,更新left或者right的值,
  • 找特定值的时候,先看是否相等,然后利用上边的判断哪边是有序的,还要去看target是否处于有序数组,否则去无序里面找
    剑指 Offer 53 - I. 在排序数组中查找数字 I

寻找比目标字母大的最小字母 744

剑指Offer(三十二):把数组排成最小的数
剑指Offer(五十一):构建乘积数组

剑指Offer 39:数组中出现次数超过一半的数字

  • Arrays.sort(nums);排序函数
  • 哈希

双指针

剑指Offer(十三):调整数组顺序使奇数位于偶数前面

  • 双指针:考虑定义双指针 i , j 分列数组左右两端,循环执行:
    指针 i从左向右寻找偶数;
    指针 j 从右向左寻找奇数;
    将 偶数 nums[i]和 奇数 nums[j] 交换。
  • 两个队列

移动零283

  • 快慢指针 (赋值前边的非0元素)
  • 后边剩的元素直接赋0

移除数组特定值元素27 移除数组重复元素26

  • 双指针法、暴力法
  • 移除特定值:只是把nums[j]当成了一个容器,ij都从0开始,不等于就放进去,否则i就继续找
  • 移除重复元素,

两数之和(无序数组)3 有序数组 167

  • 之前那个i、j从两头搜的方法,是针对有序数组的,所以不行,这个就是从头两个指针,一次遍历就好了
  • 新建数组:int[] index=new int[2];

递归

旋转数组189

  • 先整体旋转(0,n-1)
  • 然后旋转前边和后边(0,k-1)(k,n-1)

快排

J40最小的k个数

  • Arrays.copyOf(原数组,新数组长度)
  • 跟找出第k个一样,只不过gettop,返回int[]
  • 快排、找出topk

数组中的第k个最大元素215

矩阵(回溯?)

二维数组中的查找 剑指 Offer 04. 74

  • 从二维数组的右上角开始查找。如果当前元素等于目标值,则返回 true。如果当前元素大于目标值,则移到左边一列。如果当前元素小于目标值,则移到下边一行。
  • 利用rows、row、cols、col matrix.length == 0 || matrix[0].length == 0

矩阵中的路径12
顺时针打印矩阵J26

  • 按层打印,定义top,bottom,left、right(matric.length matric[0].length)、数组data,数组下标index
  • 条件left<right,bottom<top,更改四个位置变量,固定某行列的位置进行打印
  • top的在矩阵中的下标是从0开始,bottom相反

剑指Offer(三十):连续子数组的最大和
剑指offer有关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值