day3——两数之和
// 小白一名,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——两数之和的更多相关文章
- 给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X
题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的 ...
- LeetCode 170. Two Sum III - Data structure design (两数之和之三 - 数据结构设计)$
Design and implement a TwoSum class. It should support the following operations: add and find. add - ...
- 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 ...
- 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 ...
- [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 ...
- [LeetCode] 1. Two Sum 两数之和
Part 1. 题目描述 (easy) Given an array of integers, return indices of the two numbers such that they add ...
- Leetcode(一)两数之和
1.两数之和 题目要求: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重 ...
- 南大算法设计与分析课程OJ答案代码(1)中位数附近2k+1个数、任意两数之和是否等于给定数
问题1 用来测试的,就不说了 问题2:中位数附近2k+1个数 给出一串整型数 a1,a2,...,an 以及一个较小的常数 k,找出这串数的中位数 m 和最接近 m 的小于等于 m 的 k 个数,以及 ...
- 两数之和,两数相加(leetcode)
我们都知道算法是程序员成长重要的一环,怎么才能提高算法呢, 出来在网上看视频之外,动手练习是非常重要的.leetcode 就是一个非常好的锻炼平台. 1. 两数之和,在 leetcode 里面是属于 ...
随机推荐
- python函数带()与否
一.不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成二.带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果 进程和线程的target=fun ...
- python类与对象-如何让对象支持上下文管理
如何让对象支持上下文管理 问题举例 一个telnet客户端的类TelnetClient, 调用实例的connect(),login(),interact方法 启动客户端与服务器交互,交互完毕后需要调用 ...
- Notification web 桌面消息推送
var NotificationHandler = { isNotificationSupported: 'Notification' in window, isPermissionGranted: ...
- git之commit
面解释的话, 1.git commit -m用于提交暂存区的文件: 2.git commit -am用于提交跟踪过的文件. 要理解它们的区别,首先要明白git的文件状态变化周期,如下图所示 工作目录下 ...
- [assembly: AssemblyVersion("1.0.1.*")] 指定版本字符串不符合所需格式 - major[.minor[.build[.revision]]]
报如下错误, 解决方法:打开项目文件,修改 打开项目文件修改:<Deterministic>true</Deterministic> 为:<Deterministic&g ...
- ECMAScript6 入门教程记录 变量的解构赋值
(1)变量的解构赋值 基本用法:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). let a = 1; let b = 2; let c = ...
- JS根据屏幕分辨率改变背景宽高
//控制浏览器显示的高宽 function document_loaded() { GotoMainStep(); /; document.getElementById("main1&quo ...
- Linux Spi驱动移植小结
2012-01-07 22:21:29 效果图: 理论学习后,主要是linux中spi子系统设备框架的了解后,主控制器与设备分离的思想,那么我要开始动手了. 1, make menuconfig添加 ...
- word模板导出的几种方式:第一种:占位符替换模板导出(只适用于word中含有表格形式的)
1.占位符替换模板导出(只适用于word中含有表格形式的): /// <summary> /// 使用替换模板进行到处word文件 /// </summary> public ...
- ORM以及Django使用ORM创建表
day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n k1:v1\r\n ...\r\n \r\n ...