1 前言

之所以开始刷 LeetCode 上的算法题,一是快面临秋招,第二点是因为提升自己的编程能力,坚持两个月,希望博友们监督。

这个系列打算用 C# 和 Java 编程,为什么用两门语言,因为经历春招,发现招 C# 的公司实在是 太 太 太少了,只能在学 C# 的同时,将 Java 基础也顺带练一练,C# 和 Java 的语法差不多,不会有点太大难度。

废话不多说,开始上题吧。

2 题目及解决

2.1  题目

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [, , , ], target = 

因为 nums[] + nums[] =  +  =
所以返回 [, ]

2.2  C# 解决方法

2.2.1 暴力解决

题目蛮简单,暴力解决即可。

public class Solution {
public int[] TwoSum(int[] nums, int target) {
int[] res = new int[];
for (int i = ; i < nums.Length - ; i++){ for (int j = i + ; j < nums.Length; j++ ){ if (nums[i] + nums[j] == target){ res[] = i ;
res[] = j ;
break;
}
}
}
return res;
}
}

暴力解法,两次for循环,遍历所有可能,这也是容易想到的方法,时间复杂度O(n^2),空间复杂度O(1);

2.2.2 使用字典

public class Solution {
public int[] TwoSum(int[] nums, int target) { Dictionary<int,int> dic = new Dictionary<int,int>();
int[] res = new int[]; //数据存入字典
for(int i=;i<nums.Length;i++)
{
dic.Add(nums[i], i);
} for(int j=;j<nums.Length;j++)
{
int value = target - nums[j]; if(dic.ContainsKey(value) && dic[value]!=j)
{
res[] = j;
res[] = dic[value];
break;
}
}
return res;
}
}

时间复杂度T(n) = O(n)

2.3 Java 解决方法

2.3.1暴力解决

class Solution {
public int[] twoSum(int[] nums, int target) { int[] res = new int[];
for (int i = ; i < nums.length - ; i++){ for (int j = i + ; j < nums.length; j++ ){ if (nums[i] + nums[j] == target){ res[] = i ;
res[] = j ;
break;
}
}
}
return res;
}
}

2.3.2 使用HashMap

class Solution {
public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<>();
for (int i = ; i < nums.length; i++) {
map.put(nums[i], i);
}
for (int i = ; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement) && map.get(complement) != i) {
return new int[] { i, map.get(complement) };
}
}
throw new IllegalArgumentException("No two sum solution");
}
}

利用哈希表,每次存储target减去当前数的差值(key),当前值的下标(value),当再碰到这个值时,即找到了符合要求的值。时间复杂度O(n),空间复杂度O(n);

3 总结

3.1 C# 和 Java 中的数组表示不同

3.1.1 C#  数组表示

一维数组的声明与赋值:

    class Program
{
static void Main(string[] args)
{
//一、一维数组 //1.1声明和初始化一维数组
int[] array1 = new int[]; //1.2赋值一维数组 //方式1 可以创建并初始化一个数组,比如:(【】里也可以不省略数组的大小,但是只要写了数组的大小,后面的赋值就要满足数组的大小)
int[] array2 = new int[] { , , , , }; int[] array3 = new int[] { , , , , , , , , , }; //方式2 通过使用索引号赋值给一个单独的数组元素,比如:
array1[] = ; //方式3 在声明数组的同时给数组赋值,比如:
double[] balance = { 2340.0, 4523.69, 3421.0 }; Console.WriteLine(array1.Length);//显示数组长度
Console.ReadKey(); }
}

二维数组的声明与赋值:

        static void Main(string[] args)
{//声明和初始化以及赋值二维数组
int[,] a = new int[, ] {
{, , , } , /* 初始化索引号为 0 的行 */
{, , , } , /* 初始化索引号为 1 的行 */
{, , , } /* 初始化索引号为 2 的行 */
}; Console.WriteLine(a.Length);
Console.ReadKey();
}

3.1.2 Java中的数组表示

一维数组和 C# 相同

二维数组的声明与赋值:

        static void Main(string[] args)
{
String str[][] = new String[3][4];
System.out.println( total.length);
}

Java 的二维数组和 C# 的二维数组表示差距还蛮大的,要注意使用!!!

区别 1 :Java中的一维数组中的 “[ ]” 可以放在 变量后边也可以放在前边,而 C# 的 放在前面。Java中的二维数组 要以 “[ ] [ ]” 放在 变量后边 ,而 C# 中二维数组 是以 “[  , ]”放在变量前边的。。。(为了方便记忆不记混,同一 C# 放在变量前 ,Java 放在比变量后)

区别2:C# 表示数组长度的 Length 要首字母要写 ,Java中的数组长度要小写 。

区别3:在.Net  模仿java 的过程中   抛弃了 HashMap ,所以以后再去面试.Net的时候当别人问你HashTable 和HashMap 的区别的时候,请告诉他,C#.Net 中  没有HashMap 。

【LeetCode-数组篇】 1 Two Sum的更多相关文章

  1. LeetCode——数组篇:659. 分割数组为连续子序列

    659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...

  2. LeetCode刷题总结-数组篇(上)

    数组是算法中最常用的一种数据结构,也是面试中最常考的考点.在LeetCode题库中,标记为数组类型的习题到目前为止,已累计到了202题.然而,这202道习题并不是每道题只标记为数组一个考点,大部分习题 ...

  3. LeetCode刷题总结-数组篇(中)

    本文接着上一篇文章<LeetCode刷题总结-数组篇(上)>,继续讲第二个常考问题:矩阵问题. 矩阵也可以称为二维数组.在LeetCode相关习题中,作者总结发现主要考点有:矩阵元素的遍历 ...

  4. LeetCode刷题总结-数组篇(下)

    本期讲O(n)类型问题,共14题.3道简单题,9道中等题,2道困难题.数组篇共归纳总结了50题,本篇是数组篇的最后一篇.其他三个篇章可参考: LeetCode刷题总结-数组篇(上),子数组问题(共17 ...

  5. c++ LeetCode(初级数组篇)十一道算法例题代码详解(一)

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/10940636.html 唉!最近忙着面试找实习,然后都是面试的很多是leetcode的算法题, ...

  6. [LeetCode] 325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组

    Given an array nums and a target value k, find the maximum length of a subarray that sums to k. If t ...

  7. 【持续更新】leetcode算法-数组篇

    会在近期陆续地完成数组篇的整理,希望对找工作的小伙伴有所帮助.   1.Two Sum:两数相加为一固定值,求其下标.一次遍历数组,用一个hash表存储已经访问过的数及其下标,对于新访问的数value ...

  8. 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)

    转自  http://tech-wonderland.net/blog/summary-of-ksum-problems.html 前言: 做过leetcode的人都知道, 里面有2sum, 3sum ...

  9. Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划)

    Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划) 题目描述 已知一个正方形二维数组A,我们想找到一条最小下降路径的和 所谓下降路径是指,从一行到 ...

  10. Leetcode数组题*3

    目录 Leetcode数组题*3 66.加一 题目描述 思路分析 88.合并两个有序数组 题目描述 思路分析 167.两数之和Ⅱ-输入有序数组 题目描述 思路分析 Leetcode数组题*3 66.加 ...

随机推荐

  1. matlab练习程序(点云表面法向量)

    思路还是很容易想到的: 1.首先使用KD树寻找当前点邻域的N个点,这里取了10个,直接调用了vlfeat. 2.用最小二乘估计当前邻域点组成的平面,得到法向量. 3.根据当前邻域点平均值确定邻域质心, ...

  2. JHipster生成微服务架构的应用栈(三)- 业务微服务示例

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  3. 使用Visual Studio Team Services敏捷规划和项目组合管理(四)——冲刺计划和任务板

    使用Visual Studio Team Services敏捷规划和项目组合管理(四)--冲刺计划和任务板 团队在sprint计划会议期间创建冲刺积压工作项,通常在冲刺的第一天召开该会议.每个冲刺都对 ...

  4. HDFS客户端的权限错误:Permission denied

    报错:Permission denied: user=root, access=WRITE, inode="hadoop":hadoop:supergroup:rwxr-xr-x ...

  5. CentOS6.8下MySQL MHA架构搭建笔记

    转载请注明出处,本文地址:http://www.cnblogs.com/ajiangg/p/6552855.html 以下是CentOS6.8下MySQL MHA架构搭建笔记 IP资源规划: 192. ...

  6. python第一百零九天---Django 4

    session :1. Session 基于Cookie做用户验证时:敏感信息不适合放在cookie中 a. Session原理 Cookie是保存在用户浏览器端的键值对 Session是保存在服务器 ...

  7. 多个iframe中根据src获取特定iframe并执行操作

    多个iframe中根据src获取特定iframe并执行操作 前言:在项目中做一个批量编辑工单时需要在一大堆的iframe中的某一个iframe里边再用模态框的形式显示编辑区域,然后再在模态框里边加入i ...

  8. Amazon onsite behavior question

    https://www.1point3acres.com/bbs/thread-307462-1-1.html http://kraftshala.com/how-to-raise-the-bar-i ...

  9. ABAP 7.50 新特性 – Open SQL中的宿主表达式和其它表达式

    在长期的停滞后,Open SQL的发展终于从沉睡中醒来.从ABAP 7.40开始,SAP推进了某些关键的改变,以尽可能地包含SQL92中的特性,并提供与ABAP CDS中的DDL里面的SELECT一样 ...

  10. 强大而灵活的字体图标替代库iconfont

       前言概述 在开发网页制作过程中通常需要一些网页小图标,前端需要PS切图,将单个小图标icon组合成CSS雪碧图过程中,需要一些时间和精力; 如果网页制作中需要的小图标icon有一套css框架库集 ...