二、解答
①暴力解,直接上两层循环
public class Solution {
public int[] TwoSum(int[] nums, int target) {
int[] result=new int[2];
int i=0;
int j=nums.Length-1;
while(ii){
if(nums[i]+nums[j]==target){
result[0]=i;
result[1]=j;
break;
}
else{
j--;
}
}
i++;
j=nums.Length-1;
}
return result;
}
}
执行用时:184 ms, 在所有 C# 提交中击败了19.76%的用户
内存消耗:43 MB, 在所有 C# 提交中击败了82.94%的用户
知识点:
C#声明有固定大小的数组:(1条消息) C# 数组的五种声明方式_李天贵-Gloria的博客-CSDN博客_c#声明数组
②先将数组排序,通过两次for()循环来求解
public class Solution {
public int[] TwoSum(int[] nums, int target) {
int[] result=new int[2];
int[] newArr=new int[nums.Length];
int[] key=new int[2];
bool find=false;
for(int i = 0; i < nums.Length; i++){//给新数组深度赋值
newArr[i] = nums[i];
}
Array.Sort(newArr);//给新数组排序
for(int i=0,j=nums.Length-1;itarget){//两数相加若比目标值大,让大下标j--
j--;
}
else if(newArr[i]+newArr[j]
执行用时:140 ms, 在所有 C# 提交中击败了78.73%的用户
内存消耗:43.3 MB, 在所有 C# 提交中击败了42.84%的用户
知识点:
- C#数组排序 Array.Sort()方法:
(1条消息) C# 数组Array.Sort()、List.Sort()排序使用方法_永恒星的博客-CSDN博客_c# 数组排序
- 数组赋值,需要通过深度遍历的方法,一个一个给,如果是单单的“=”,新数组仍然指向同一个地址
三、其他方法
③使用了哈希表,即C#中的Dictionary()键值对,内存换时间了属于是
public class Solution {
public int[] TwoSum(int[] nums, int target) {
//new一个哈希表实例
Dictionary kv=new Dictionary();
for(int i=0;i
执行用时:136 ms, 在所有 C# 提交中击败了86.47%的用户
内存消耗:43.9 MB, 在所有 C# 提交中击败了11.26%的用户
(好像还不太如我自己写的两层for()哈哈哈哈哈)
知识点:
- C# Dicitionary类/哈希表/键值对:
(1条消息) C#中Dictionary的作用及用法讲解_lfw2019的博客-CSDN博客_c#中dictionary
LeetCode 1. Two Sum 两数之和,C# 哈希表 Dictionary_Fanstorm丶的博客-CSDN博客
- C#中的Dictionary.ContainsKey()方法:
C#中的Dictionary.ContainsKey()方法 - 经验笔记 (nhooo.com)
- C#中的Dictionary.Add()方法:
C# Dictionary.Add()用法及代码示例 - 纯净天空 (vimsky.com)



