【LeetCode】two num 利用comparable接口 对对象进行排序
题目two num
题意:给定一个整数数组和一个目标值。要求在数组中找到两个数。使得它们的和相加等于目标值。而且返回两个数的下标
思路:1.假设使用暴力,时间复杂度为O(n^2)
2.能够先将全部数进行排序,从最大值和最小值開始匹配再依据和目标值的比較移动,知道找到结果。时间复杂度为O(nlog(n))
知识点:comparable 接口的使用。利用其进行对象的自然排序。相关文章
public class Solution {
static class Node implements Comparable<Node>{
int val,index;
public Node(int v,int i){
val = v;
index = i;
}
public int compareTo(Node o){
return this.val - o.val;
}
}
public int[] twoSum(int[] numbers,int target){
int[] xy = new int[2];
Node[] nodes = new Node[numbers.length];
for(int i = 0;i < numbers.length;i++){
nodes[i] = new Node(numbers[i],i+1);
}
Arrays.sort(nodes);
int i = 0,j = numbers.length-1;
while(i < j){
if(nodes[i].val+nodes[j].val == target){
break;
}
else if(nodes[i].val+nodes[j].val < target)
i++;
else
j--;
}
xy[0] = nodes[i].index <= nodes[j].index ?
nodes[i].index : nodes[j].index;
xy[1] = nodes[i].index > nodes[j].index?nodes[i].index:nodes[j].index;
return xy;
}
}
【LeetCode】two num 利用comparable接口 对对象进行排序的更多相关文章
- 利用Comparable接口实现对对象数组的排序
Arrays 类中的sort方法承诺可以对对象数组进行排序,但是需要对象所属的类实现Comparable接口 任何实现Comparable接口的对象都需要实现该方法 并且在Java SE 5.0之前该 ...
- Java之——利用Comparator接口对多个排序条件进行处理
转载自:http://blog.csdn.net/l1028386804/article/details/56513205 膜拜大神··· 一.需求 假设现在有个如此的需求:需要对一个这样的雇员列表进 ...
- 我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理
一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时 ...
- 关于comparator接口和comparable接口以及它们各自的方法compare()和compareTo()
在今天做的LeetCode的题中有两道都出现了利用接口实现对象的排序.两题的相关链接: 1.利用comparable接口对对象排序 2.利用comparator接口实现排序 因为之前都没接触过这两个接 ...
- Java中实现对象的比较:Comparable接口和Comparator接口
在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中 ...
- Java:实现对象的比较 comparable接口和comparator接口
在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中 ...
- Java.lang.Comparable接口和Java.util.Comparator接口的区别
Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序. 1.Com ...
- TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法
[自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...
- 考虑实现Comparable接口
考虑实现Comparable接口 compareTo方法没有在Object中声明.相反,它是Comparable接口中唯一的方法.compareTo方法不但允许进行简单的等同性比较,而且允许执行顺 ...
随机推荐
- POJ 3553 Task schedule【拓扑排序 + 优先队列 / 贪心】
Task schedule Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 515 Accepted: 309 Special J ...
- Maven / Nexus 的用法和经验
Maven / Nexus 的用法和经验
- Saga的实现模式——观察者(Saga implementation patterns – Observer)
https://lostechies.com/jimmybogard/2013/03/11/saga-implementation-patterns-observer/ 侵删. NServiceBus ...
- ArcGIS中的多个栅格波段合成一幅影像
此处用到了ArcGIS栅格处理中的Composite Bands工具( Data Management Tools --> Raster --> Raster Processing).具体 ...
- min-height IE6的解决方案
selector { min-height:500px; height:auto !important; height:500px; } 因为IE6中当内容大于容器高度或宽度时,就会撑破容器.并且在同 ...
- scrapy-splash抓取动态数据例子十三
一.介绍 本例子用scrapy-splash通过搜狗搜索引擎,输入给定关键字抓取微信资讯信息. 给定关键字:数字:融合:电视 抓取信息内如下: 1.资讯标题 2.资讯链接 3.资讯时间 4.资讯来源 ...
- Yii添加验证码
添加带验证码的登陆: 1.先在模型modules下的LoginForm.php定义一个存储验证码的变量:public $verfyCode: 2.然后在rules()方法里定义:array('veri ...
- 【千纸诗书】—— PHP/MySQL二手书网站后台开发之功能实现
前言:前一篇温习了网站开发需要掌握的基础知识,这一篇重点梳理一下各个功能模块的[详细设计与实现].项目github地址:https://github.com/66Web/php_book_store, ...
- EffectiveJava(24)使用@SuppressWarnings("unchecked")消除非受检警告
-..使用泛型编程时,会遇到许多编译器警告,如:非受检强制转化警告,非受检方法调用警告,非受检普通数组创建警告,费受精转换警告.这次的内容就是遇到这些警告的时候你该怎么办. PS:非受检警告就是代码上 ...
- 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
如下的$.ajax函数 $.ajax({ url: url,// 请求的地址 data:{id:id,pieceId:pieceId,pieceDesc:pieceDesc,actualStock:a ...