645. Set Mismatch

The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of the numbers in the set got duplicated to another number in the set, which results in repetition of one number and loss of another number.

Given an array nums representing the data status of this set after the error. Your task is to firstly find the number occurs twice and then find the number that is missing. Return them in the form of an array.

出現(xiàn)了數(shù)值和索引一致,并且各異這種極好的條件,所以可以考慮索引排序。
問題是怎么寫索引排序。在所有數(shù)都不同的情況下,考慮到每個數(shù)值都會對應(yīng)唯一一個索引,如果在原來數(shù)組的位置I-1上對應(yīng)的NUMS[I]!=i-1,那么明顯的nums[i]應(yīng)該被放到nums[i]-1上去,此時數(shù)組[nums[i]-1]位置上肯定也有一對這樣的不匹配(因為nums[i]應(yīng)該被放在nums[i]-1的位置上,由各異可以知道這個位置上只能有一個,明顯的現(xiàn)在nums[i]-1位置上的數(shù)不是nums[i])。換句話說,對于沒有重復(fù)值只存在1.兩個位置上的數(shù)都不符合條件。2.兩個位置上的數(shù)都符合條件,這兩種情況。

現(xiàn)在,出現(xiàn)了重復(fù)元素,出現(xiàn)了第三種情況,即一個符合,一個不符合。這種情況,只有在這個元素是重復(fù)元素時才會出現(xiàn)。所以我們直接跳過元素就好了

注意在swap時一定要保證交換以后一定是num[i]=i+1,數(shù)組滿足排定,所以用的whlle循環(huán)。

class Solution {
    public int[] findErrorNums(int[] nums) {
        int[] result= new int[2];
        for(int i = 0 ;i<nums.length;i++)
        {
            while(nums[i]!=i+1&&nums[nums[i]-1]!=nums[i])
                swap(nums,i,nums[i]-1);
           
        }
// 排定數(shù)組
 for(int i = 0 ;i<nums.length;i++)
{
     if(nums[i]!=i+1)
      {
           result[0]=nums[i];
          result[1]=nums[i+1];
}
        return result;
    }
    private void swap (int[] nums,int i ,int j )
    {
        int temp =nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
}

排序后遍歷找到第一個不滿足條件的數(shù)。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,659評論 5 6
  • 平視 有時,在頭腦里旋轉(zhuǎn)出的,是蒼蠅的經(jīng)驗。心靈中這些莫名的焦灼如同扶不起的阿斗,拒絕向上,即使邊走邊歇也不干。 ...
    稻子X視角閱讀 332評論 0 0
  • Storm在1.0之后對nimbus支持了HA,根據(jù)官方提供的文檔,同樣是利用了zk來做分布式鎖,并且配置文件中新...
    aiguang2016閱讀 4,480評論 0 4
  • 山里人,常年累月居住山中,平靜的生活方式,平靜的心,面對現(xiàn)實生活中的爾虞我詐知之甚少,但是為了生活仍然需要奔波在鬼...
    飛的更好閱讀 380評論 0 0

友情鏈接更多精彩內(nèi)容