leetcode系列---Two Sum C#code
/// <summary> /// 方法一:双循环 /// </summary> /// <param name="array"></param> /// <param name="target"></param> /// <returns></returns> public static List<int[]> twoSum(int[] array, int target) { //int[] result; List<int[]> result = new List<int[]>(); for (int i = 0; i < array.Count(); i++) { for (int j = i + 1; j < array.Count(); j++) { if (array[i] + array[j] == target && i != j) { int[] aa = { i, j }; result.Add(aa); } } } return result; } /// <summary> /// 方法二:单循环 /// </summary> /// <param name="array"></param> /// <param name="target"></param> /// <returns></returns> public static List<int[]> twoSum2(int[] array, int target) { List<int[]> result = new List<int[]>(); for (int i = 0; i < array.Count(); i++) { var x = array.Select((a, index) => new { a, index }).Where(a => a.a == (target - array[i])); if (x.ToList().Count != 0 && i != x.ToList()[0].index) { int[] aa = { i, x.ToList()[0].index }; var y=result.Where(a => a[0] == x.ToList()[0].index && a[1] == i); if (y.ToList().Count == 0) result.Add(aa); } } return result; }
控制台展示:
static void Main(string[] args) { Console.WriteLine("请输入数组:"); string ss = Console.ReadLine(); int length = ss.Length; int[] arry = new int[length]; for (int i = 0; i < length; i++) { string s = ss.Substring(i, 1); arry[i] = Convert.ToInt32(s); } Console.WriteLine("请输入目标值:"); int target = Convert.ToInt32(Console.ReadLine()); List<int[]> result = twoSum2(arry, target); foreach (int[] ar in result) { foreach (int i in ar) { Console.Write(i); } } Console.ReadLine(); }