leetcode第一题

来源:1-1 哈希表基础

weixin_慕圣6334738

2022-01-28 02:47:55

bobo老师你好,

关于leetcode第一题, 下面是我的java解法, 但是有一点我不明白的是在第十行的位置我写了

Integer index = record.get(target - nums[i]); 但是如果我写的是int index = record.get(target - nums[i]); 那么就会报错, 那么我一开始的理解就是我的HashMap里面储存的是Integer所以不能返回int类型(不知道这个理解对不对) 


https://img.mukewang.com/climg/61f2e82d09c9653311740678.jpg


然后我又看了看它的参考答案


https://img.mukewang.com/climg/61f2e88409b50b5715160578.jpg


它这里的complement是int类型,为什么就能够直接在map里面搜索了呢, 为什么不是Integer类型才能搜索呢? (抱歉可能我对java的理解并不深刻)

写回答

1回答

liuyubobobo

2022-01-28

写 int index = record.get(target - nums[i]),语法上没有问题。但是:


1)


index 是 int 型,是一个基本数据类型,基本数据类型不可能为 null,也不能和 null 作比较(非基本类型都是引用,才有可能是 null);


2)


如果 record.get(target - nums[i]) 中,target - nums[i] 不存在,则会发生运行时错误(类似数组越界)。你可以尝试,以下代码编译没有错误,运行会出错。


HashMap<Integer, Integer> record = new HashMap<>();

record.put(1, 1);

int index = record.get(666);


理由和 1)差不多,如果 record 中不存在 666,就会返回 null,而 null 不能赋值给 int。


==========


根据这两条,再仔细看你提供的代码 2),避开了 record.get 为 null 的可能性(因为先使用 cintainsKey 确保了一定能在 record 中取到值。)


继续加油!:)



0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2636 学习 · 1090 问题

查看课程

相似问题

leetcode 1248

回答 1

leetcode 907

回答 1

leetcode 332题

回答 1

Leetcode 146

回答 1

阿里面试题

回答 1