将一个数组中不重复_50. 数组中重复的数字

ff175d846724fb1823e549ffe45038cc.gif

            1f3de4a82b62ca27ddbfd851bfaf9cf7.png

04d9f478fd30dafab1b89dcbed9808d3.png

1. 思路

        还可以把当前序列当成是一个下标和下标对应值是相同的数组(时间复杂度为O(n),空间复杂度为O(1));遍历数组,判断当前位的值和下标是否相等:

        * 若相等,则遍历下一位;

        * 若不等,则将当前位置i上的元素和a[i]位置上的元素比较:若它们相等,则找到了第一个相同的元素;若不等,则将它们两交换。换完之后a[i]位置上的值和它的下标是对应的,但i位置上的元素和下标并不一定对应;重复2的操作,直到当前位置i的值也为i,将i向后移一位,再重复2。

        本文采用思路3,如果还是不懂,看下面的实例分析就懂了!

        举例说明:{2,3,1,0,2,5,3}

        * 0(索引值)和2(索引值位置的元素)不相等,并且2(索引值位置的元素)和1(以该索引值位置的元素2为索引值的位置的元素)不相等,则交换位置,数组变为:{1,3,2,0,2,5,3};

        * 0(索引值)和1(索引值位置的元素)仍然不相等,并且1(索引值位置的元素)和3(以该索引值位置的元素1为索引值的位置的元素)不相等,则交换位置,数组变为:{3,1,2,0,2,5,3};

        * 0(索引值)和3(索引值位置的元素)仍然不相等,并且3(索引值位置的元素)和0(以该索引值位置的元素3为索引值的位置的元素)不相等,则交换位置,数组变为:{0,1,2,3,2,5,3};

e8f2ce75d1a7d8e9ee76c95be5dbd17f.png

2. 代码

bca9048e5e8636057f49ce1f57bca4ba.png

7c16ee50516dd25132ff40a54367f306.png

推荐阅读:

★ 求职经验:点这里

★ 算法刷题:点这里

★ 投资理财:点这里

★ AI很简单:

★ 扫盲科普:点这里

♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠♥◆♣♠

     351331ef42037b63acdba73607d0c15f.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值