八大数据结构-数组
- 寻找数组中第二小的元素
View Code1 public static int GetSecMinValue(int[] arr) 2 { 3 if (arr.Length < 2) 4 { 5 throw new Exception("数组长度不符合要求,最小长度为2"); 6 } 7 int FirstMinValue = Math.Min(arr[0], arr[1]); 8 int SecMinValue = Math.Max(arr[0], arr[1]); 9 for (int i = 0; i < arr.Length; i++) 10 { 11 if (arr[i] < FirstMinValue) 12 { 13 int tmp = FirstMinValue; 14 FirstMinValue = arr[i]; 15 SecMinValue = tmp; 16 } 17 else if (arr[i] < SecMinValue && arr[i] != FirstMinValue) 18 { 19 SecMinValue = arr[i]; 20 } 21 } 22 return SecMinValue; 23 }
- 找到数组中第一个不重复出现的整数
View Code1 public static int GetFirstNoRepeat(int[] arr) 2 { 3 foreach (int value in arr) 4 { 5 int Count = arr.AsEnumerable().Where(p => p == value).Count(); 6 if (Count == 1) 7 return value; 8 } 9 return 0; 10 }
- 合并两个有序数组,自己的方案(假设数组大小从小到大)
View Code1 public static int[] MergeSortedArray(int[] arr1, int[] arr2) 2 { 3 List<int> lst = new List<int>(); 4 int index = 0; 5 for (int i = 0; i < arr1.Length; i++) 6 { 7 while (arr1[i] >= arr2[index]) 8 { 9 lst.Add(arr2[index]); 10 index++; 11 } 12 lst.Add(arr1[i]); 13 } 14 for (; index < arr2.Length; index++) 15 { 16 lst.Add(arr2[index]); 17 } 18 return lst.ToArray(); 19 }
-
合并两个有序数组,参考网上最优方案(假设数组大小从小到大)
View Code1 public static int[] MergeSortedArray_Update(int[] arr1, int[] arr2) 2 { 3 if (arr1.Length == 0 && arr2.Length != 0) return arr2; 4 if (arr2.Length == 0 && arr1.Length != 0) return arr1; 5 if (arr1.Length == 0 && arr2.Length == 0) return new int[] { }; 6 int[] resultArr = new int[arr1.Length + arr2.Length]; 7 int arr1Index = arr1.Length - 1; 8 int arr2Index = arr2.Length - 1; 9 while (arr1Index >= 0) 10 { 11 if (arr1[arr1Index] > arr2[arr2Index]) 12 { 13 resultArr[arr1Index + arr2Index + 1] = arr1[arr1Index]; 14 arr1Index--; 15 } 16 else if (arr1[arr1Index] < arr2[arr2Index]) 17 { 18 resultArr[arr1Index + arr2Index + 1] = arr2[arr2Index]; 19 arr2Index--; 20 } 21 else 22 { 23 resultArr[arr1Index + arr2Index + 1] = arr2[arr2Index]; 24 arr2Index--; 25 resultArr[arr1Index + arr2Index + 1] = arr1[arr1Index]; 26 arr1Index--; 27 } 28 if (arr2Index < 0) break; 29 } 30 for (; arr2Index >= 0; arr2Index--) 31 { 32 resultArr[arr2Index] = arr2[arr2Index]; 33 } 34 for (; arr1Index >= 0; arr1Index--) 35 { 36 resultArr[arr1Index] = arr1[arr1Index]; 37 } 38 return resultArr; 39 }
- 重新排列数组中的正数和负数
View Code1 public static void SortedArr(int[] arr) 2 { 3 if (arr.Length == 0 || arr.Length == 1) return; 4 int less = 0; 5 int plus = 0; 6 int index = 0; 7 while (index < arr.Length) 8 { 9 if (arr[index] < 0) 10 { 11 less = index; 12 while (plus < less) 13 { 14 int tmp = arr[less - 1]; 15 arr[less - 1] = arr[less]; 16 arr[less] = tmp; 17 less--; 18 } 19 plus = less + 1; 20 } 21 index++; 22 } 23 }


浙公网安备 33010602011771号