LeetCode一个简单的算法: 两个数组元素求和

本文记录了一道LeetCode上的简单算法题,通过双层循环和哈希表两种方法求解两个数组元素之和。重点讨论了哈希表在优化时间复杂度上的作用,并反思了个人在编程实践中对哈希表的运用不足。
摘要由CSDN通过智能技术生成

让自己经常做些算法训练, 目前在LeetCode上面找Easy类型的做起, 俗话说柿子要挑软的捏嘛.
一个非常简单的题目:
在这里插入图片描述
幸亏下面有Example说明, 不然我以为用数组中两个元素的Index相加, 尴尬⊙﹏⊙‖∣
二话不说, 直接上双层for循环:

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(nums[i] + nums[j] == target) {
                    return new int[]{i, j};
                }
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }

嗯, 说到最后面一行抛异常, 我最开始是return null, 要善用异常处理, 后面我会专门花一块时间学一下.

看了答案, 我的解法被归类于暴力法(Brute force), 有点儿尴尬. 说实话, 虽然很久没写代码, 但是我其实觉得我的变成思想是有所提升的.

瞄了一下第二个解法----Two-pass Hash Table

public int[] twoSumMap(int[] nums, int target){
        Map<Integer, Inte
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值