Leecode数据结构刷题记录第二天:1. 两数之和

 

 ①:两次遍历 时间复杂度为O(n平方)

  public int[] TwoSum(int[] nums, int target) {
            for (int i = 0; i < nums.Length; i++) 
            {
                for (int j = i+1; j < nums.Length; j++) 
                {
                    if (nums[i] + nums[j] == target) 
                    {
                        return new int[]{i, j};
                    }
                }
            }
              return new int[0];
    }

②:哈希表(仅遍历一次)时间复杂度O(n)

  public int[] TwoSum(int[] nums, int target) {
         Dictionary<int, int> a = new Dictionary<int, int>();
            for (int i = 0; i < nums.Length; i++) 
            {
                int complement = target - nums[i];
                if (a.ContainsKey(complement))
                {
                    return new int[] { i, a[complement] };
                }
                if (!a.ContainsKey(nums[i])) 
                {
                    a.Add(nums[i], i);
                }
            }
            return new int[] { 0, 0 };
    }

 

posted @ 2021-11-10 11:06  奕心1999  阅读(22)  评论(0)    收藏  举报