剑指offer
piziZhang2013
写出极致的代码是目前的追求
展开
-
知名高校入职笔试题
计算如下代码运行的次数,结果用n表示。int x = 1, y = 1;for (int i=1; i<=n;i++) for (int j=1; j<=i;j++) for ( int k=1; k<=j;k++) { x = x+ y; }简答分析如下:当i=1时,j=1,k=1,次数为1;当i=2时,j=1,k=1 j=2,k=1,2 次数为3;当i=3时,j=1,k=1 ...原创 2021-11-18 20:16:48 · 270 阅读 · 0 评论 -
代码整洁之道
1.将事物抽象出来,站在更高角度思考问题,概念抽象 class Point { public double x; public double y; }过多暴露细节,即使设为私有和加入设置和访问器,仍然知道细节实现 public interface Point { public double getX(); public double原创 2020-03-19 09:27:44 · 92 阅读 · 0 评论 -
剑指offer:excel列号转数字
问题说明:在Excel2003中,用A表示第1列,B表示第2列......Z表示第26列,AA表示27列,AB表示第28列......以此类推。写出由excel列号转数字和数字转列号的函数。private static final char[] excelLetterTable = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J原创 2014-03-26 18:54:21 · 525 阅读 · 0 评论 -
面试题12:打印1到最大的n位数
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。说明:1.本题本质上是一个大数问题。 2.打印出习惯上的十进制数。 3.分析问题仍然是全集观念,且算法体现可读性和高效性。public static void printToMaxDigitBitOf(int n) { if (原创 2014-03-26 18:49:09 · 516 阅读 · 0 评论 -
著名的八皇后问题
package com.zhang.csdn;import java.io.File;import java.io.FileWriter;import java.io.IOException;class EightQueen { private static int total = 0; private final static int EIGHT_QUEEN_ROW = 8原创 2014-03-26 19:10:35 · 542 阅读 · 0 评论 -
面试题24:二叉搜索树的后序遍历序列
问题说明:1.二叉搜索树又名二叉排序树,即左孩子小于根结点,右孩子大于根结点;2.给定一个整数数组序列,判定该序列是否为某个二叉搜索树的后序序列;3.假设输入的数组任意两个数字各不相同。// judge post squence is some binarySearchTree post travel squencepublic static boolean isPostSequ原创 2014-01-13 13:23:48 · 580 阅读 · 0 评论 -
面试题41:和为s的两个数VS和为s的连续正数数列
问题说明:1.和为s的两个数问题是从一个排序的数组中找出和为s的两个数;2.原题是找出一个即可,现在全部找出;3.和为s的连续正数数列是给定一个数找出所有连续正数数列的和为s,例如s为9,(2,3,4)就是其中一组。(一)和为s的两个数问题public static int findNumbersWithSum(int[] sorted, int fromIndex, int原创 2014-01-14 15:53:40 · 512 阅读 · 0 评论 -
面试题8:旋转数组的最小数字
问题说明:1.原数组是排序的,将数组开始几位搬到末尾,例如{3,4,5,1,2}是{1,2,3,4,5}的一个旋转;2.遍历一遍时间复杂度为O(n);3.充分利用排序信息,二分思想,时间复杂度为O(logn)public static int getMinValueIndex(int[] rotate){ int len = 0; if(rotate == null ||原创 2014-01-13 11:01:54 · 528 阅读 · 0 评论 -
面试题27:二叉排序树转双向链表
说明:1.二叉排序树又名二叉搜索树;2.二叉树转成的双向链表是排好序的。public BinaryTreeNode convert(BinaryTree bt){ BinaryTreeNode tail =this.convertToDoubleLink(bt.getRoot(), true); return tail; } private BinaryTreeNode c原创 2014-01-12 16:57:54 · 625 阅读 · 0 评论 -
面试题38:数字在排序数组中出现的次数
问题说明:1.给定排序的数组,例如从小到大已经排序。2.给定某个查找关键字,求出该关键字出现的次数。3.完全遍历一遍,时间复杂度为O(n),并未充分利用排序的信息。4.需要借鉴二分查找的思想改进,算法的时间复杂度为O(logn)。package com.zhang.csdn;/** * @author pizi * @date 2014年1月7日 */public原创 2014-01-10 18:20:48 · 467 阅读 · 0 评论