【LeetCode刷题】——两数之和.1
---恢复内容开始---
一直想在leetcode上面刷题,但是java刚刚摸了一下门,所以迟迟没有动手,今天做了第一道题,感觉自己实在菜的不行,但是还是学到了很多东西,
就记录一下遇到的问题。
首先是题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对
应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
先看下自己写出来的代码:
可以看出编程的思想还是很原始的。运行时出现了问题:
1.
这其实是数组越界问题,问题的原因在于,数组定义是从0到length-1的,而当我的i=length的时候就已经超出了数组的最大表示范围,所以显示数组越界。
其实我觉得这和我这段时间用verilog写硬件有关系,因为用那个的时候for循环里面都是用的<=,实际上我在for(;;)里面也用逗号进行的分隔(真的是
功夫不到家)。那么这是第一个错误。实际上这里还有一个错误,就是i的初始值应该为0。
2.这时出现了第二个错误:
这个错误的意思是没有返回值,我们发现,在数组内部没有两个数的和是target时是没有返回值的。所以在这里加上return null。
这里就运行成功了。
再来看下大佬的代码:
发现这里面有一行
这里面有一个throw的用法,throw是用来抛出异常状态的,改天另写一篇关于学习throw的,然而我在运行大佬代码的时候发现,会显示
这个地方其实不是原来代码出现问题了,而是上文说的,初始化i应该=0,而我原来的代码里i=1,这里为什么会输出这样的结果呢?
我认为是这样,我们测试用的数组是【2,7,11,15】,target 9
这样在运行的时候,因为是从7开始检索的,那么显然循环中没有发现和为9的两个数,于是开始运行throw语句,抛出了异常:IllegalArguementException
最新文章
- dagger2系列之依赖方式dependencies、包含方式(从属方式)SubComponent
- Asp.net使用代码修改配置文件的节点值
- window7下使用vagrant打造lamp开发环境(一)
- 2013年国庆节前51Aspx源码发布详情
- Open vSwitch FAQ (一)
- c# TextReader/TextWriter 的类
- 使用servlet实现文件上传
- [C#]网络编程系列专题二:HTTP协议详解
- OC相关-02:oc和c的基本差异
- hibernate 一张数据表的流程
- 前端MVVM学习之KnockOut(一)
- ProgressBar、ProgessDialog用法解析
- 一张图了解Spring Cloud微服务架构
- Eclipse创建第一个Spring Boot项目
- 让Mustache支持简单的IF语句
- 怎样删除C/C++代码中的所有注释?浅谈状态机的编程思想
- 使用kubeadm部署kubernetes1.9.1+coredns+kube-router(ipvs)高可用集群
- dc-vastinspector
- 洛谷 P1563 玩具谜题
- Testing Round #12 A,B,C 讨论,贪心,树状数组优化dp