leetcode算法第一题

来源:互联网 发布:抗韩中年人淘宝外设店 编辑:程序博客网 时间:2024/06/05 15:07

LEETCODE算法汇总

最近一直刷算法题,努力提高自身的算法功底.如果学习过程中不总结,很快就忘记了,所以要养成总结习惯,近期会不间断的写一写自己的心得以及对题目的认识.大佬可以跳过

leetcode第一题

题目

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.

Example:Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

题目概述

我们看题目可以知道,这个题目是找到数组中和为target的下标.题目补充说明为,我们假设数组中只存在一组这样的数.因此题目就变的简单了.

第一种解题

大家应该都可以想起来的一种比较复杂的方法为,双重循环,这样的话就是复杂度为o(n2).

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

做完这个我们应该下一步提升算法的效率,参考一下discussion,得到一种较好的算法为第二种

进阶的算法

class Solution {    public int[] twoSum(int[] nums, int target) {        int[] arr = new int[2];        Map<Integer,Integer> map = new HashMap<Integer,Integer>();        for(int i=0; i<nums.length;i++){            if(map.containsKey(target-nums[i])){                arr[1] = i;                arr[0] = map.get(target-nums[i]);            }            map.put(nums[i],i);        }        return arr;    }}

我们可以看一下算法执行的时间
这里写图片描述

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 18点是什么时辰 5点是什么时辰 9点是什么时辰 十二时辰养生对照表 15点是什么时辰 现在是什么时辰 十二时辰对应的时间 一天十二时辰 五点是什么时辰 按生日时辰起名字 十二时辰对照表属相 剖腹产选时辰 剖腹产时辰选择 一点是什么时辰 3点是什么时辰 一天有几个时辰 16时是什么时辰 7点是什么时辰 时辰怎么算的 十二个时辰怎么读 10点是什么时辰 12点是什么时辰 14点是什么时辰 早上是什么时辰 2点是什么时辰 阴历生日看命运 测命重几斤几两 早上6点是什么时辰 下午7点是什么时辰 中午1点是什么时辰 晚上9点是什么时辰 早上9点是什么时辰 一天的十二个时辰 早上5点是什么时辰 下午6点是什么时辰 晚上7点是什么时辰 下午3点是什么时辰 下午5点是什么时辰 下午4点是什么时辰 天支地更十二时辰对照表 十二点是什么时辰