Algs4-1.1.28删除重复元素

1.1.28(原问题)删除重复元素。修改BinarySearch类中的测试用例来删去排序之后白名单中所有重复元素。
对问题的调整:标记一维数组中非递减有序整数中重复的数。设有序数>=0。这个问题可以有两种理解:a)每个数只出现一次,例如:1,2,2,3,4,5 去重后得到:1,2,3,4,5
b)重复的数字全部删除,例如去重后得到:1,3,4,5。

a)实现思路:数组索引从头移至数组倒数第二个,当前数组索引元素值与下一元素值进行比较,相同时将当前元素值标记成标记值。
for(int i=0;i<ArrayOfSorted.length-2;i++)
      {
          if (ArrayOfSorted[i]==ArrayOfStored[i+1]) ArraryOfSorted[i]=-1;
      }

b)在a思路的基础上增加规则:当前元素与下一个元素不同并且当前元素与前一个元素值相同时那么当前元素标记成标记值。当前元素是倒数第二个元素并且与最后一个元素相同,那么将最后一个元素标记成标记值。
boolean IsRepeart=false;
      for(int i=0;i<ArrayOfSorted.length-2;i++)
      {
          if (ArrayOfSorted[i]==ArrayOfStored[i+1])
          {
              ArraryOfSorted[i]=-1;
              IsRepeart=true;
              if (i==ArrayOfStored.length-2) ArrayOfStored[i+1]=-1;
          }
          else
          {
              if (IsRepeart) ArrayOfStored[i]=-1;
              IsRepeart=false;
          }
      }

转载于:https://www.cnblogs.com/longjin2018/p/9848669.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值