1. 程式人生 > >C#實現如何判斷一個數組中是否有重複的元素

C#實現如何判斷一個數組中是否有重複的元素

 如何判斷一個數組中是否有重複的元素 

實現判斷陣列中是否包含有重複的元素方法 這裡用C#程式碼給出例項

方法一:可以新建一個hashtable利用hashtable的Contains方法進行查詢

 1         /// <summary>
 2         /// Hashtable 方法
 3         /// </summary>
 4         /// <param name="array"></param>
 5         /// <returns></returns>
 6         public
static bool IsRepeat(int[] array) 7 { 8 Hashtable ht = new Hashtable(); 9 for (int i = 0; i < array.Length; i++) 10 { 11 if (ht.Contains(array[i])) 12 { 13 return true; 14 }
15 else 16 { 17 ht.Add(array[i], array[i]); 18 } 19 } 20 return false; 21 }

方法二:使用for迴圈進行比較  需要注意的是j<=i    如果只是等於,實際上效率偏低,有重複計算可以自己摸索,有時間我畫個圖出來,^_^(這裡感謝面試官的提醒)

 1         /// <summary>
2 /// for迴圈 3 /// </summary> 4 /// <param name="yourValue"></param> 5 /// <returns></returns> 6 public static bool IsRepeat2(int[] array) 7 { 8 for (int i = 0; i < array.Length; i++) 9 { 10 for (int j = 0; j < array.Length; j++) 11 { 12 if (j <= i) 13 { 14 continue; 15 } 16 if (array[i] == array[j]) 17 { 18 return true; 19 } 20 } 21 } 22 return false; 23 }

測試程式碼:

 1         static void Main(string[] args)
 2         {
 3             int[] array = new int[] { 1,2,3,4,3,6,7,8};
 4             int[] array2 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
 5             Console.WriteLine("---------------包含重複元素----------------");
 6             bool isrepeat = IsRepeat(array);
 7             bool isrepeat2 = IsRepeat2(array);
 8             Console.WriteLine(isrepeat);
 9             Console.WriteLine(isrepeat2);
10 
11             Console.WriteLine("---------------不包含重複元素----------------");
12             bool isrepeat3 = IsRepeat(array2);
13             bool isrepeat4 = IsRepeat2(array2);
14             Console.WriteLine(isrepeat3);
15             Console.WriteLine(isrepeat4);
16             Console.Read();
17         }

執行結果:

各位好漢如果有更好的方法能夠優化程式,減少計算的次數,麻煩給出,感激!

相關推薦

C#實現如何判斷個數是否重複元素

 如何判斷一個數組中是否有重複的元素  實現判斷陣列中是否包含有重複的元素方法 這裡用C#程式碼給出例項 方法一:可以新建一個hashtable利用hashtable的Contains方法進行查詢 1 /// <summary> 2 /// Hash

JS判斷個數是否重複值的三種方法

參考 http://superivan.iteye.com/blog/1131328 var ary = new Array("111","22","33","111"); var s = ary.

c實現個數最大子序列的和 (兩種方法)

||_ 題目描述 ||_ 分析 本題的核心是計算出一個序列的所有子序列中元素和為最大時的值,不要求輸出對應的子序列是什麼,而只要求輸出和的最大值是多少。 法一: 我們把序列分成兩半(左邊

C程式設計實現個數只有兩個數不是成對出現,找出這兩個數

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> void Find(int *arr, int sz, int *p1, int *p2) { int num = 0; int i

C#怎麼判斷個數是否存在某個陣列值

(1) 第一種方法: int[] ia = {1,2,3}; int id = Array.IndexOf(ia,1); // 這裡的1就是你要查詢的值 if(id==-1) // 不存在 else // 存在 (2) 第二種方法: string[] strArr =

C語言】個數只有兩個數字是出現次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現

一看到這道題,我想到了之前學習過的異或。我們知道兩個相同的數字異或的結果是 0,因為在計算機中,異或運算是按照二進位制位來運算的,相同為 0 ,相異為  1。任何數與 0 異或都等於它自己。既然我們要找出來一組數中不同的兩個數字,也可以採用這種方法。 但是這次不是直接異或,

C語言實現個數只有兩個數字是出現次,其他所有數字都出現了兩次。

思路:異或陣列中的每一個數,最終出現的結果是兩個只出現一次數字的異或結果,,因為兩個陣列不一樣,所以異或結果不為0,二進位制結果有一個是1.在結果中找到第一個為1的位置,記為n,然後陣列右移n位,為1,為0,分別輸出兩個數#include <stdio.h> #i

c語言 將個數的奇數和偶數分開放在一起

       在一個數組中的元素大多奇數和偶數是混在一起的,而將陣列中元素奇數和偶數分開存放則是我們要解決的問題。        將奇數和偶數分開存放然後打印出來的思路是先建立兩個空間,將奇數和偶數分別存放起來,然後

Java總雜湊表的運用,判斷個數是否存在相同的元素之間的距離在k以內!

Check if a given array contains duplicate elements within k distance from each other 用雜湊表,複雜度O(n),

C語言】個數只有兩個數字是出現次,其他所有數字都出現了兩次。 找出這兩個數字。

要求:一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現。程式設計實現。 程式碼如下 int find(int arr[],int len) { int i,j,count; for(i = 0;i

使用jQuery判斷個數是否包含某個值

1、當需要在前端為陣列去重的時候,可以使用jQuery的inArray方法來判斷。 2、具體操作如下: var array = ['a','ab','abc']; $.inArray('abc',array);下標從0開始,若結果為-1則表示此陣列中不存在這個值。

如何判斷個數是否包含一個字元或字串

第一種方法:遍歷陣列 String[] arr1 = {"1","2","3","4","6","7"}; for (int i = 0; i < arr1.length; i++) {if("

判斷個數是否包含某個字串

1.public bool isExist(string[] ss, string str)        {            List<string> ls = new List<string>(ss);            foreach

java 判斷個數的數值是否連續相鄰

*  判斷一個數組中的數值是否連續相鄰  *  滿足以下條件:     *              1.0是例外可以反覆出現  0可以通配任何字元  *              2.相同的數值不

python實現個數找到完全含有另個數元素的最短子陣列

#找出陣列strW中包含strA所有元素的最少情況 strA=['testing','pattern'] strW=['hello','this','is','a','testing','page','description','testing','pattern','al

如何判斷個數的數值是否連續相鄰

問題 一個整數數列,元素取值可能是0~65535中的任意一個數,相同數值不會重複出現;0是個例外,可以反覆出現。設計一個演算法,當從該數列中隨意選取5個數值時,判斷這5個數值是否連續相鄰。需要注意一下

C++:將個數的前m個元素和後n-m個元素整體互換位置

笨方法 >_<  #include <iostream> using namespace std; int main() { int n,m,i,j; int a[100]; cout<<"請輸入要建立陣列的長度(不能超過100)

個數抽取不同的元素

public function j() { $user = array(1,1,2,1,1,1,1,1,9); $draw_user = []; $num = 3; for ($i=0; $i < $num; $i++) { $user_key = array_ran

【演算法】刪除個數為0的元素

題目描述: 給定一個一維陣列,將其中為0的元素刪除掉,非零元素的相對位置保持不變,最終目標陣列保留在原陣列中,並且目標陣列長度之外的元素全部置為0。 解題思路: (1)陣列非零元素往前移動,時

php從個數刪除多個元素,獲取陣列鍵值對等……

$array1 = array(1,2,3,4,5,6); $array2 = array(2,3); //1、獲取陣列鍵值對 $arr1 = array_keys($array2); var_dump($arr1); Array ( [0] => 0 [1] =&g