剑指Offer
SavantStart
这个作者很懒,什么都没留下…
展开
-
排序-快排、二分及旋转数组的最小数字
旋转数组的最小数字: *把一个数组最开始的若干位搬到数组的末尾,我们称子为旋转数组。输入一个递增排序的旋转,输出旋转数组中的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,最小元素是1. 直接遍历也能够找到最小值,但是这样没有用到旋转的特性,其时间复杂度为O(n),不是优解。 可以把旋转数组看成是两个有序的子数组,那么可以用二分查原创 2015-04-22 16:08:28 · 475 阅读 · 0 评论 -
《剑指Offer--栈-队列》
用两个栈来实现队列:*栈的结构是先进后出,队列的结构是先进先出,那么可以用两个栈来实现一个队列的结构,先将一组元素(abcdef)压入到一个栈1中,再出栈压入栈2中(fedcba),就实现了队列的: 代码如下:*package t1;import java.util.LinkedList;import java.util.List;import java.util.Queue;impor原创 2015-04-21 16:36:49 · 374 阅读 · 0 评论 -
二叉树基本知识(总结)
二叉树在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果原创 2015-04-26 17:55:11 · 496 阅读 · 0 评论 -
打印1到最大的n位数
题目:输入数字n,按顺序打印从1、2、3….到最的n位数的十进制数。如输入3,打印1、2、3….999.注意问题: 1、n<=0 2、大数问题,n位数的最大值,可能超过long范围,发生越界,解决办法是用字符串或者数组存放数。解决办法一://打印1、2、3...最大的n位数 static void print1ToMaxOfDigits(int n){ if(n<=0)原创 2015-04-24 14:50:04 · 397 阅读 · 0 评论 -
删除链表节点(链表倒置)
import java.util.Stack;class Nodes{ int data ; Nodes next; Nodes(){} Nodes(int data) { this.data = data; this.next = null; }}class LinkeNodes{ //create publi原创 2015-04-24 16:55:01 · 389 阅读 · 0 评论 -
高质量的代码
1、代码规范性: 1)、清晰的书写 2)、清晰的布局 3)、合理的命名 2、代码完整性 1、从三个方面确保完整性 1)、功能测试:看要求的功能是否实现 2)、边界测试:对临界的条件的测试看是否正确合理,如基于循环的看循环的边界条件是否正确,基于递归的看递归终止的条件是否正确。 3)、负面测试:错误的输入是否有合理的处理。 2、三种错误的处理方式原创 2015-04-24 09:35:16 · 335 阅读 · 0 评论 -
数字的整数次方
题目:实现double Power(double base,int expoent),求base的expoent次方。不得使用库函数,同时不用考虑大数问题。 注意的问题: 1、底数为零的情况 2、指数为负数的情况 3、指数为零 实数(float、double)不能直接用==,因为计算机计算有误差,如果两个数差的绝对值很小,如小于0.0000001,这认为相等。a的n次方的数学公式://数字原创 2015-04-24 09:45:26 · 648 阅读 · 0 评论 -
位运算
位运算有五种:与、或、异或、左移、右移;与(&):两个都为1时才为1;其他都为0。 或(|):有一个为1就为1;其他为0. 异或(^):两个相同为0,不同为1. 左移(>>):左移n位,则高位(左边)去掉n,低位(右边)补0.相当于乘以n个2. 右移(>>):右移n位,无符号位整数:去掉低位(右边)的n位,高位补0. 有符号整数:正数:去掉低位n位,左边补0.负数:左边补1(负数在计算机中原创 2015-04-23 18:08:14 · 476 阅读 · 0 评论 -
青蛙跳台阶问题
(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。 (2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?分析:1)当n = 1, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法;…….原创 2015-04-22 18:03:49 · 395 阅读 · 0 评论 -
时间为O(n)的排序方法
package t1;public class Sort { //O(n)的排序方法,对公司的人员年龄进行排序,借助数组长度为100的空间换来了O(n)的时间度 static void sortages(int ages[],int len){ if(ages == null || len <= 0) { return ; }原创 2015-04-21 22:43:06 · 481 阅读 · 1 评论