“一万年太久,只争朝夕”

数组方法总结


最近刷了一些有关数组的题目,觉得有必要对数组进行归纳总结。其实所有的数组题目本质是考察对数组增删查改的熟练度。

数组增加元素的方法动态开辟一个新数组,找到插入元素的位置下标,然后将后面元素的下标都加一位,最后在将这个元素放进来。

例如合并两个有序数组中,将第二个数组中的元素插入到第一个数组中去。采用了双指针法,一个遍历数组nums1,一个遍历nums2数组,由于合并后的数组要求是升序的,所以这两个指针是从后往前遍历。

数组删除元素的方法有两个,第一个是开辟一个新数组,遍历数组,把符合要求的元素保存到新数组中。。第二个方法是在原数组移除元素,不开辟额外空间,采用的思路是双指针法。

例如移除元素这个题目中,定义两个指针s1和s2,s1是用数组下标来访问数组内容,s2用来找要删除的值,如果等于就跳过,反之把它赋值给s1,然后s1和s2同时往后走一个单位。直到s2遍历完整个数组。

又比如删除有序数组的重复项中定义了双指针dst和src,src用来找不同项,dst用来存储不同项的元素。如果nums[src] ==nums[src - 1],src就往后走,反之就将nums[src - 1]的值赋给下标为dst的元素,然后dst和src均向后走1个单位,直至src遍历完数组。

数组查找元素的方法根据你要查找的元素不同,会有不同的方法,但最基本的还是暴力求解法。

例如查找消失的数字中采用了 ^ 的方法,即遍历数组的元素把他们全部^起来,然后再遍历 ^ 1到n个数字,最后全部 ^。
比如查找数组中至少是其他数字两倍的最大数需要找到最大的元素和第2个最大的元素。然后进行比较。
比如查找多数元素采用的方法是投票法。
例如查找除自身以外数组的乘积采用的是前缀后缀法。即分别累积前缀的乘积和后缀的乘积。
又比如查找找到所有数组中消失的数字中采用哈希表,把nums[i]作为下标,记录出现元素,最后将额外空间和输出空间合并为一个空间,既做输出又做记录。

修改数组的例子比如轮转数组,典型做法是三段逆置法。

总之做题时先分析题目的要求,往相似的思路上靠拢,无非就这四种类型,确实有不会的或者新颖思路的再记录下来就好了。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Filex;

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值