Two Sum - 新手上路
不是计算机相关专业毕业的,从来没用过leetcode,最近在学习数据结构和算法,用leetcode练练手。
新手上路,代码如有不妥之处,尽管指出来。
今天抽空做的第一个题:Two Sum(最简单的呃呃呃)
题目如下:
解决思路:
现有数组nums[p-r],首先将nums从小至大排序,然后将nums[p] + nums[r]与指定值k比较,如果nums[p] + nums[r] > k则说明nums[r]大了,r--;
反之p++,直到nums[p] + nums[r] = k。
以下是我的Java实现(老实说,时间复杂度较高)
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] copyNums = new int[nums.length];
for(int i = 0; i < nums.length; ++i){
copyNums[i] = nums[i];
}
int[] result = new int[2]; // 先排序
quickSort(nums, 0, nums.length - 1); // 将两个元素之和与target相比较
int[] temp = compare(nums, 0, nums.length - 1, target); boolean flagA = false;
boolean flagB = false;
for(int i = 0; i < copyNums.length; ++i){
if(temp[0] == copyNums[i] && !flagA){
result[0] = i;
flagA = true;
continue;
}
if(temp[1] == copyNums[i] && !flagB){
result[1] = i;
flagB = true;
}
}
return result;
} private int[] compare(int[] nums, int p, int r, int target){
while(p < r){
int k = nums[p] + nums[r];
if(k == target)
return new int[]{nums[p], nums[r]};
if(k > target){
r--;
}else{
p++;
}
}
return null;
} private void quickSort(int[] nums, int p, int r){
if(p >= r)
return;
int q = partition(nums, p, r);
quickSort(nums, p, q-1);
quickSort(nums, q+1, r);
} private int partition(int[] nums, int p, int r){
// 最简单的,选择nums最后一个元素作为中间数
int k = nums[r];
int i = p; for(int j = p; j <= r; j++){
if(nums[j] < k){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
++i;
}
} nums[r] = nums[i];
nums[i] = k; return i;
}
}
Two Sum - 新手上路的更多相关文章
- Dart语言快速学习上手(新手上路)
Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...
- php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28
php大力力 [001节]2015-08-21.php在百度文库的几个基础教程新手上路日记 大力力php 大力同学 2015-08-21 15:28 话说,嗯嗯,就是我自己说,做事认真要用表格,学习技 ...
- OpenGL教程之新手上路
Jeff Molofee(NeHe)的OpenGL教程- 新手上路 译者的话:NeHe的教程一共同拥有30多课,内容翔实,而且不断更新 .国内的站点实在应该向他们学习.令人吃惊的是,NeHe提供的例程 ...
- webpack4配置详解之新手上路初探
前言 经常会有群友问起webpack.react.redux.甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少. 今天就尝试着一起来聊 ...
- 转-spring-boot 注解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935
spring-boot 注解配置mybatis+druid(新手上路) 转载 2016年12月20日 10:17:17 标签: sprinb-boot / mybatis / druid 10475 ...
- 活字格企业 Web 应用生成器新手上路指南
活字格是一款企业 Web 应用生成器,使用了类 Excel 的设计界面,通过简单的拖拽操作,就能快速制作出一个 Web 信息管理系统.在整个使用过程中无需专业软件知识,没有任何技术门槛,能轻松实现各行 ...
- Ocelot 新手上路
新手上路,老司机请多多包含!Ocelot 在博园里文章特别多,但是按照其中一篇文章教程,如果经验很少或者小白,是没法将程序跑向博主的结果. 因此总结下 参考多篇文章,终于达到预期效果. Oce ...
- 新手上路——it人如何保持竞争力
新手上路——如何保持竞争力 JINGZHENGLI 套用葛大爷的一句名言:21世纪什么最贵,人才.哪你是人才还是人材?还是人财或人裁?相信大家都不是最后一种.何如保持住这个光环呢?就需要我们保持我们独 ...
- FreeSql 新手上路系列教程已发布在 cnblogs
FreeSql 是一个功能强大的对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.5+(QQ群:4336577) FreeSql采用MIT开源协议托管 ...
随机推荐
- nginx开启gzip
gzip on; gzip_min_length 5k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 3; gzip_typ ...
- SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑
习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...
- PAT——1069. 微博转发抽奖
小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数M(<= 1000).N ...
- linux 常用进程使用命令
查看进程占用pid ps aux | grep program_filter_word 杀死pid kill -
- haproxy原理理解
1.haproxy使用最需要注意的点: 1.1连接数: 前端maxconn默认值为2000,非常有必要将其增加几倍. 1.2超时时间 timeout connect 60s # haproxy和服务端 ...
- 轻量ORM-SqlRepoEx (十四)最佳实践之Dapper(1)
简介:SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的是Lambda表达式,所以,对c#程 ...
- staticmethod classmethod
1. 静态方法 @staticmethod 只是名义上归类管,实际上静态方法里访问不了类或者实例中的任何属性 2. 类方法 @classmethod 只能访问类变量,不能访问实例变量 3.属性方法 @ ...
- javascript知识点杂记
for(var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); //输出10个10,因为setTimeout方法是异步 ...
- ACM1012:u Calculate e
Problem Description A simple mathematical formula for e iswhere n is allowed to go to infinity. This ...
- skyline画折现bug代码
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>加 ...