在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。
三種方法的**分別是:
常規思想:
1.乙個個比較,重複即就是相等,則輸出複雜度o(n平方);
public static int duplicate(int numbers,int length)
int count=0;
for(int i=0;ii;j++)
}} return numbers[count];
}
2.巧妙的字串索引,複雜度o(n)
public static boolean duplicate(int numbers,int length,int duplication)
for(int j = 0; j < length; j++)
}return false;
}
3.借助hashmap,出現次數存放在value中。複雜度o(n)
public static int duplicate(int numbers,int length)else
} return result;
} public static void main(string args) ;
system.out.println(duplicate(a,5));
}
追求進步 陣列中只出現一次的數字
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。num1,num2分別為長度為1的陣列。傳出引數 將num1 0 num2 0 設定為返回結果 public class solution int k 0 記錄陣列中異或出的結果例如0010 for int ...
追求進步 陣列中出現次數超過一半的數字
陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。public class solution int middle length 1 int start 0 int end le...
追求進步 二叉搜尋樹的後序遍歷序列
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。本題有兩種方法,遞迴和非遞迴 public class solution return verifysequenceofbst sequence,0,sequen...