zoukankan      html  css  js  c++  java
  • 第一个leetcode题目: two sum

    第一个leetcode,大概意思:在一个数组里,任意找两个数字,让它们的和等于一个给定目标值。要求:1、输出这两个数在数组的下标 2、保证第一个数的下标要小于第二个数的下标

          做这个题,还是有一点点欣慰的地方就是:读完题,就有思路,而且能顺利编出来。(虽然因为那个小小的 return b 修改了好几次)

    public class Solution {
        public int[] twoSum(int[] nums, int target) {
            int[] b = 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){
                       b[0]=i+1;
                       b[1]=j+1;
                  }
                    
                }
                
            }
           return b; 
        }
    }
    

      不多说,直接上 Submission Details。。。。看到这运行时间,我也是醉了(也第一次看到了Java与众语言的差距。。。)

               

     不过在讨论版里学习了O(n)的方法:思路是先往map里面存一个numbers[0]的元素,判断target-numbers[0] 的结果存在于map中:如果不在,往map存numbers[1],判断target-numbers[1] 的结果是否存在于map中(此时target-numbers[1]的查找值只有numbers[0])。。。。依次类推,如果存在,则说明刚刚好遇到了结果,直接输出index1和(i+1),因为(i+1)总是要大于index1的~

          另外还要纠正原来的思维定式:map<key,value>中,总以为key是要为value服务的(value比key重要),其实不然,key和value处在同等地位!以后还需要勤思考啊~!

    public int[] twoSum(int[] numbers, int target) {
            Map<Integer, Integer> map = new HashMap<Integer,Integer>();
            for(int i = 0; i < numbers.length; i++) {                           
                Integer index1 = map.get(target-numbers[i]);
                if (index1 != null) {                                //第一次进循环,可以从这里先看
                    return new int[]{index1,i+1};
                }
                map.put(numbers[i], i+1);
            }
            return null;
    }
    

      

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    fatfs输出目录
    《基于多光程长的高散射物质光学参数的测量及其应用》论文
    《2013李永乐线性代数强化班》视频1,2,3,4
    oled屏幕模块
    python中数据结构
    大数据python词频统计之hdfs分发-cacheFile
    8大排序之Python实现 冒泡排序优化
    大数据python词频统计之本地分发-file
    2019-04-30vmware虚拟机安装macos 10.8格式为iso
    2019-04-24Scurecrt 如何下载文本文件
  • 原文地址:https://www.cnblogs.com/neversayno/p/4553494.html
Copyright © 2011-2022 走看看