• 01-两数之和


    1.问题

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数, 并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    Input: nums = [2, 7, 11, 15], target = 9
    Output: [0, 1]

    2.思路

    1.暴力法
    两个嵌套for循环遍历数组,找出和为目标值的两个整数,并以数组形式返回下标。

    时间复杂度为O(n^2),空间复杂度为O(1)

    2.一遍哈希表
    先把数组nums的各元素值及序号存入HashMap中,再从该表中查找是否包含target-nums[x]的元素。
    这两个操作可以合在一起,因此可以把遍历两遍哈希表改进为遍历一遍。

    时间复杂度O(n),空间复杂度O(n)

    3.题解

    暴力法

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            for(int i=0;i<nums.length-1;i++){
                for(int j=i+1;j<nums.length;j++){
                    if(target==nums[i]+nums[j]){
                        return new int[]{i,j};
                    }
                }
            }
            return null;
        }
    }
    

    一遍哈希表

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            Map<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i < nums.length; i++) {
                int complement = target - nums[i];
                if (map.containsKey(complement)) {
                    return new int[] { map.get(complement), i };
                }
                map.put(nums[i], i);
            }
            throw new IllegalArgumentException("No two sum solution");
        }
    }
    
    花五年时间成为某个领域的专家
  • 相关阅读:
    javascript事件委托和jQuery事件绑定on、off 和one
    转:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    网游加速器原理、技术与实现
    自动化测试等级
    游戏测试工具
    JMeter
    Python高级编程
    测试提高项目的方法
    python mysqldb
    Python中的操作符重载
  • 原文地址:https://www.cnblogs.com/sang-bit/p/11559729.html
Copyright © 2020-2023  润新知