// 小白一名,0算法基础,艰难尝试算法题中,若您发现本文中错误,
  或有其他见解,往不吝赐教,感激不尽,拜谢。
领扣 第2题 今日算法
题干
//给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
//
// 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
//
// 示例:
//
// 给定 nums = [2, 7, 11, 15], target = 9
//
// 因为 nums[0] + nums[1] = 2 + 7 = 9
// 所以返回 [0, 1]
初次尝试 
/*
* 第一思路,仍是暴力解题
* 每个元素与除自身外的元素相加
* 何时与目标值相等,何时打破循环
* 不出意外 只超过了 17.2%的玩家
* 一组数据时间约为25ms
* */

public int[] twoSum1(int[] nums, int target) {
int first;
int second;
int a;
int b=1;
//外循环 假设第一个值为索引为a
out:
for (a = 0; a < nums.length; a++) {
first=nums[a];
//内循环 假设第二个值索引为b
for(b=a+1;b<nums.length;b++){
second=nums[b];
//判断时候相等 相等跳出所有循环
if(first+second==target){
break out;
}
}
}
//返回值
return new int[]{a,b};
}

初次尝试

/*
* 想了下 之前的代码约为n方次
* 一组数据两两组合且不重复为为n*(n-1)/2
* 按照获得此公式的逻辑
* 改动下了代码 因为代码本身很简单 便没有写注释
* 其实是头疼,太累了
* 本次用时约为 12ms 快了一倍
* */

     public int[] twoSum2(int[] nums, int target) {

         int first;
int second;
for(int a=1;a<nums.length;a++){
first= nums[a];
second=target-first;
for(int b=0;b<a;b++){
if(second==nums[b]){
return new int[]{a,b};
}
}
}
return null;
}

第二次尝试


/*
* 下面是 目前的最优代码之一
* 因为我认为这个网站的数据量并不够大
* 可能会存在误差
* 思路跟我的一样,但是使用了HashMap
* 使用是否包含代替了我的一次循环
* 不太明白为什么会比我快了这么多
* 应该是因为 HashMap的底层查找要优于循环吧
* 明天再看看吧
* */

 public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>(nums.length);
for(int i = 0; i < nums.length; i++){
if(map.containsKey(target - nums[i])){
return new int[]{i, map.get(target - nums[i])};
} else {
map.put(nums[i], i);
}
}
return null;
}

第三次尝试


今天学servlet用到了druid 才发现之前的连接池这块已经忘了好多

想要复习,可又想去学习概率论和算法

心情复杂 取舍难定

年轻时我觉得钱是最重要的,到老发现,的确如此。

When I was young,I used to think that money was the most important thing in life,now I am old,I know it is.

                                              写于 2018.11.18 

day3——两数之和的更多相关文章

  1. 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X

    题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的 ...

  2. LeetCode 170. Two Sum III - Data structure design (两数之和之三 - 数据结构设计)$

    Design and implement a TwoSum class. It should support the following operations: add and find. add - ...

  3. LeetCode 371. Sum of Two Integers (两数之和)

    Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...

  4. LeetCode 167. Two Sum II - Input array is sorted (两数之和之二 - 输入的是有序数组)

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  5. [LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  6. [LeetCode] 1. Two Sum 两数之和

    Part 1. 题目描述 (easy) Given an array of integers, return indices of the two numbers such that they add ...

  7. Leetcode(一)两数之和

    1.两数之和 题目要求: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重 ...

  8. 南大算法设计与分析课程OJ答案代码(1)中位数附近2k+1个数、任意两数之和是否等于给定数

    问题1 用来测试的,就不说了 问题2:中位数附近2k+1个数 给出一串整型数 a1,a2,...,an 以及一个较小的常数 k,找出这串数的中位数 m 和最接近 m 的小于等于 m 的 k 个数,以及 ...

  9. 两数之和,两数相加(leetcode)

    我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的.leetcode 就是一个非常好的锻炼平台. 1. 两数之和,在 leetcode 里面是属于 ...

随机推荐

  1. win10家庭版删除文件提示没有权限最简单的方式

    1.cmd 2.右键-以管理员身份运行(重要) 3.输入:net user administrator /active:yes,开启超级管理员账号 4.win+r键打开运行对话框,输入 netplwi ...

  2. python 时间戳和时间格式互相转换

    #!/usr/bin/python3 # -*- coding: utf-8 -* import time def str_to_stamp(): # 转换显示格式 time1 = time.strp ...

  3. !!在js中的用法

    var obj = ""; //undefinedconsole.log(!!obj);  //false(强制转换成Boolean类型)

  4. 多个if、elif和else的搭配使用

    if-if-if-搭配成的语句块,会一个个去匹配是否满足if里面的语句; if与elif的搭配成的语句块,当匹配到if或者elif语句判断为True的时候,那么不会执行下面elif以及else里面的语 ...

  5. java中的类型转换

    java中的类型转换分为两种 自动类型转换 要实现数据的自动类型转换必须同时满足下面两个条件 两种数据类型彼此兼容 目标类型的取值范围大于原类型范围 强制类型转换 当两种数据类型彼此不兼容,或者说目标 ...

  6. 取模性质,快速幂,快速乘,gcd和最小公倍数

    一.取模运算 取模(取余)运算法则: 1. (a+b)%p=(a%p+b%p)%p; 2.(a-b)%p=(a%p-b%p)%p; 3.(a*b)%p=(a%p * b%p)%p; 4.(a^b)%p ...

  7. 解决IE浏览器把application/json响应视为文件并尝试下载

    下面我的解决方案是针对.net MVC的,其他的解决方案也类似,就是把响应的mimeType换成IE浏览器已经拥有的.如application/json换成text/plain #region 退出登 ...

  8. spoj 1029 Matrix Summation

    题意: 对一个矩阵有2种操作: 1.把某个元素设为x. 2.查询以(x1,y1)为左上角 以(x2,y2)为右上角的矩阵中的数字的和. 思路: 二维树状数组入门题,同时对横坐标和纵坐标做前缀和就行了. ...

  9. 【SparkStreaming学习之一】 SparkStreaming初识

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  10. 2018-2019-2 网络对抗技术 20165335 Exp3 免杀原理与实践

    一.免杀原理与基础知识: (1)杀软是如何检测出恶意代码的? 检测特征码:特征码就是一般程序都不会有的代码,而后门有的那种特别的数据,而一个程序,应用有这种代码,数据的话,就直接判定为恶意代码. 主流 ...