剑指offer
文章平均质量分 61
瞌睡虫zZ
做一名安静的程序猿
展开
-
数组中重复的数字
先看看自己惨不忍睹的思路,循环遍历,对每个数字和它之前的所有数字进行比较,碰见相同的则返回true,时间复杂度为O(n2),空间复杂度为O(1)。竟然连排序都没有想到。。。 //参数说明:numbers[]存放数组元素,length表示数组长度,duplication[0]存放重复的数字 public static boolean duplicate(int numbers[],in...原创 2018-04-08 22:32:03 · 172 阅读 · 0 评论 -
从尾到头打印链表
不改变链表的结构,肯定需要遍历链表。遍历的顺序是从头到尾,输出的顺序是从尾到头,即第一个遍历到的节点最后一个输出,最后一个遍历到的节点第一个输出,这是典型的“后进先出”栈的思想。每遍历一个节点,就将节点的值放入栈中,当遍历完整个链表后再从栈顶开始输出节点的值。import java.util.ArrayList;import java.util.Stack;class ListNode{ ...原创 2018-04-16 14:53:45 · 220 阅读 · 0 评论 -
二维数组中的查找
思路:选取数组右上角数字,分三种情况:(1)如果该数字等于要查找的数字,则查找过程结束。(2)如果该数字大于要查找的数字,则该数字所在列的数字全都大于待查找值,则把该列值从查找范围中删除。(3)如果该数字小于要查找的数字,则该数字所在行的剩下的数字全都小于待查值,则把该行值从查找范围中删除。每比较一次都会删除一行或一列,从而缩小查找范围。 public boolean Find(int targ...原创 2018-04-11 14:43:47 · 180 阅读 · 0 评论 -
面试题16:数值的整数次方
最简单的代码实现如下: public double Power(double base, int exponent) { double result=1.0; for(int i=1;i<=exponent;i++) result*=base; return result; }但是上述代码未考虑如下问题:1、0的0次方无意义(程序输出1...原创 2018-04-23 15:50:36 · 311 阅读 · 0 评论 -
代码的鲁棒性
鲁棒性是指程序能够判断输入是否合乎规范要求,并对不符合要求的输入予以合理的处理。提高代码鲁棒性的有效途径是进行防御性编程,是指预见在什么地方可能会出现问题,并为这些可能出现的问题制定处理方式。例如在函数入口添加代码以验证用户输入是否符合要求。思路一:假设链表有n个节点,那么倒数第k个节点就是从头节点开始的第n-k+1个节点。遍历两次链表,第一次求出链表中节点的个数,第二次找到倒数第k个节点。若只能...原创 2018-04-25 11:28:53 · 6301 阅读 · 0 评论 -
左右最值最大差(贪心)
题目描述 给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0..K],右部分A[K+1..N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少? 给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例: [2,7,3,1,1],5 返回:6思路分析:这两个数中有一个肯定是数组的最大值原创 2018-01-14 19:15:24 · 584 阅读 · 0 评论