LeetCode : two sum

第一次写博客,算是熟悉这些编辑环境吧,本来是打算在csdn上用markdown写的,结果改了博客介绍就被关闭了,晕死。。。好了,话不多说,今天打算拿LeetCode上的第一题: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.

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

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

     return [0, 1].


分析:看到题目之后了解到需求为找到数组中两个数之和满足给定target的下标,保存在一个数组中返回。一个简单的思路就是像冒泡排序一样利用两层遍历来
找到结果。复杂度为o(n^2).
     public int[] twoSum(int[] nums, int target) {
int [] result=new int [2];
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if((nums[i]+nums[j])==target){ //遍历数组,找到满足的两个数的下标保存在数组中
result[0]= nums[i];
result[1]= nums[j];
}
}
}
if(result[0]==result[1]&&result[0]==0){ //这一步很多人不会注意,要判断原来初始化的数组中的数是否满足都不为0的要求
return null;
}else{
return result;
} }
其实这道题是一年前写的了,当时也就是为了通过而通过,所以没管复杂度的问题,其实这不是一个好习惯,今天第一次写博客又想了下,找到了更好的方法,利用
hashmap可以实现o(n):
     public static int[] twosum(int[] num,int target){
HashMap<Integer,Integer> map = new HashMap<>(); //构建hashmap
for (int i = 0;i<num.length;i++){
if (map.containsKey(target-num[i])){ //判断当前map中有木有与num[i]和为target的键,如果有则找到这对键值,
return new int[]{map.get(target-num[i]),i+1}; // 和当前下标组成结果
}else {
map.put(num[i],i);
}
}
return null;
}

  那么现在就算是完成这道题了吧,发现写博客真的不是一件那么简单的事,希望能坚持下来吧,最后来一张我gakki的美照纪念一下

  

 
 

 

最新文章

  1. ACM/ICPC 之 混合图的欧拉回路判定-网络流(POJ1637)
  2. Spring注解@Resource和@Autowired区别对比
  3. win7 audio repeater 虚拟声卡 屏幕录像专家
  4. 转:linux coredump调试
  5. centos 查看是32位还是64位
  6. java 内存分析
  7. Java日期时间使用总结
  8. OpenStack(0) - Table of Contents
  9. PHP学习笔记 - 进阶篇(7)
  10. GNU PGM
  11. Cocos2d-x精华教程汇总(第三期) cocos2d-x最新离线API文档下载(最新版3.6更新。。。)
  12. OMCS使用技巧 -- 摄像头及其动态能力
  13. spring整合dubbo
  14. frist Django app— 二、 Model和管理界面
  15. 0723掰棒子记录--vue的数据渲染
  16. python基础自学 第二天
  17. [BJWC2010] 严格次小生成树
  18. 学以致用二十三-----shell脚本里调用脚本
  19. 6. Oracle闪回特性
  20. java-常用注解

热门文章

  1. placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容
  2. css2.1实现圆角边框
  3. sas2ircu工具信息收集及磁盘定位
  4. Legendary Items-微软实习生笔试第一题
  5. 老李分享:jvm结构简介 2
  6. C#非泛型集合和泛型集合的超级详解
  7. 彻底搞定C语言指针(精华版)
  8. java 基础知识一 初识java
  9. 一些IO流的知识
  10. 现代3D图形编程学习--opengl使用不同的缓存对象(译者添加)