1. Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,

    Because nums[0] + nums[1] = 2 + 7 = 9,

    return [0, 1].

翻译:

Sum : 和

indices:索引

assume:假设

给定一系列数,以及一个指定的值

现在要选出两个数,使其和等于指定数。

假设:1.必有唯一解;2.给出的数字仅能使用一次。

解法

a.循环的去求解。

时间复杂度n(n-1)

class Solution {
public int[] twoSum(int[] nums, int target) {
int [] result =new int[2];
int result_01;
int result_02; int numsSize = nums.length;
for(int i = 0; i < numsSize; i++){
result_01 = nums[i];
result_02 = target - result_01;
for(int j =i+1; j < numsSize; j++ ) {
if(nums[j] == result_02){
result[0] = i;
result[1] = j;
return result;
}
}
}
return result;
}
}

19 / 19 test cases passed.

Status: Accepted

Runtime: 38 ms

b.需要对数组有更多的理解。。。。

自己觉得这道题的意义应该不是想上面的解法那样,单纯是对数组循环。

数组

下标:偏移量。

值:数组中存放的值

偏移量和值一一对应。

求解:两个特定值,值得和等于指定数。

数组中对对应值的查找方式: 遍历,二分等。应用场景是有区分的。。。。

现成的方法? 对方法内部实现的理解?对下标或值的操作的封装。

提高点:

1.map/字典/hashmap

应该可以把字典转换一下形式。利用高效率的方法。

------------------------------------2017/09/20--------------------------------------

我的其他解法:

class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Integer result_01;
Integer result_02;
int i; // 数值 ,,位置
List<Integer> indexList;
HashMap<Integer, List<Integer>> dataHashMap = new HashMap<>();
for (i = 0; i < nums.length; i++) {
result_01 = nums[i];
if (dataHashMap.containsKey(result_01)) {
indexList = dataHashMap.get(result_01);
indexList.add(i);
} else {
indexList = new ArrayList<>();
indexList.add(i);
}
dataHashMap.put(result_01, indexList);
} for (i = 0; i < nums.length; i++) {
result_01 = nums[i];
result_02 = target - result_01;
if (dataHashMap.containsKey(result_02)) {
indexList = dataHashMap.get(result_02);
if (indexList.get(0) != i) {
result[0] = i;
result[1] = indexList.get(0);
return result;
} else if (indexList.size() > 1) {
result[0] = i;
result[1] = indexList.get(1);
return result;
}
}
}
return result;
}
}

19 / 19 test cases passed.

Status: Accepted

Runtime: 13 ms

从第二种解法来看比之前单独循环来说要好很多了。

但是还是有缺点,先总结:

  1. 以空间换时间。
  2. 第二次解法中的思路是利用hashmap去重新记录 值以及值的索引。利用高效率的hash算法得到数据。
  3. 缺点: 看了下其他人的算法,整理:

    a.没必要去纯粹所有的数据的索引,有浪费。

    b.使用hash去提高效率是ok,但自己开始有些地方没想明白,钻牛角尖了。。。。

i. 数是由数组中的数据相加得到。

ii.能利用已知数得到另一个需要求的数,,,,,利用的数,不能一开始就假设是第一个。。。。

如果假设利用的数是第二数,那么第一个数必定在 我们的hashmap里面 :只需要去检测hashmap,如果没有则放入,然后循环。

好僵!!!!!!!!!!!!!!

and by the way:

3ms 那个代码,没看懂。。。。。。。。。

LeeCode_01_Two sum的更多相关文章

  1. LeetCode - Two Sum

    Two Sum 題目連結 官網題目說明: 解法: 從給定的一組值內找出第一組兩數相加剛好等於給定的目標值,暴力解很簡單(只會這樣= =),兩個迴圈,只要找到相加的值就跳出. /// <summa ...

  2. Leetcode 笔记 113 - Path Sum II

    题目链接:Path Sum II | LeetCode OJ Given a binary tree and a sum, find all root-to-leaf paths where each ...

  3. Leetcode 笔记 112 - Path Sum

    题目链接:Path Sum | LeetCode OJ Given a binary tree and a sum, determine if the tree has a root-to-leaf ...

  4. POJ 2739. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20050 ...

  5. BZOJ 3944 Sum

    题目链接:Sum 嗯--不要在意--我发这篇博客只是为了保存一下杜教筛的板子的-- 你说你不会杜教筛?有一篇博客写的很好,看完应该就会了-- 这道题就是杜教筛板子题,也没什么好讲的-- 下面贴代码(不 ...

  6. [LeetCode] Path Sum III 二叉树的路径和之三

    You are given a binary tree in which each node contains an integer value. Find the number of paths t ...

  7. [LeetCode] Partition Equal Subset Sum 相同子集和分割

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  8. [LeetCode] Split Array Largest Sum 分割数组的最大值

    Given an array which consists of non-negative integers and an integer m, you can split the array int ...

  9. [LeetCode] Sum of Left Leaves 左子叶之和

    Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...

随机推荐

  1. pyhton 自动化pymysql操作mysqldb数据库增删改查封装

    # coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...

  2. PAT——1022. D进制的A+B

    输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 输出格式: 输出A+B的D ...

  3. 阅读Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks

    Deep Packet Inspection based Application-Aware Traffic Control for Software Defined Networks Globlec ...

  4. 协议类接口 - NAND

    一.引脚的含义 先看下nand flash是怎么接的,如下所示便为某一款nand存储芯片的引脚图.发现其连地址信号都没有.那么是如何访问地址数据的呢? 查阅该nand flash的数据手册可得其各个引 ...

  5. Kafka 部署指南-好久没有更新博客了

    最近到了一家新公司,很多全新技术栈要理解.每天都在看各类 English Offcial Document,我的宗旨是我既然看懂了,就写下来分享,这是第一篇. 基本需求: 1.已有 zookeeper ...

  6. 1001. 温度转换 (Standard IO)

    1001. 温度转换 (Standard IO) 时间限制: 1000 ms  空间限制: 262144 KB  具体限制   题目描述 将输入的华氏温度转换为摄氏温度.由华氏温度F与摄氏温度C的转换 ...

  7. Java调用WeChat's API总结

    微信公众号结合着内置浏览器,有着普通浏览器无法完成的服务,前者可以获取浏览页面的微信用户的信息,从而根据信息为用户提供基于微信的更多服务:而后者仅仅能够浏览页面,通过用户的输入信息与用户互动. 本人根 ...

  8. vue-scroller使用

    <template> <div class="page page-scroller"> <scroller class="scroller& ...

  9. echarts 报错问题 is null 或者未定义等问题

    我们在使用echarts的时候会出现is null或者未定义等报错提示,但是却无从下手的情况. 其一,我们是完全按照echarts的官方文档来添加的js文件:其二,在对使用option时候的配置是按照 ...

  10. TF-IDF介绍

    TF-IDF是什么 TF-IDF是一种统计方法,用以评估一个词对于一篇文章或语料库中一篇文章的重要性.字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降. T ...