随笔分类 - 程序员面试金典
摘要:/** * 在一个字符串(1 record = new HashMap(); char[] ch = str.toCharArray(); for(int i=0;i<ch.length;i++) { if(!record.containsKey(ch[i])) { record.put(ch[i], 1); }...
阅读全文
摘要:/** * 输入两个链表,找出它们的第一个公共结点 */ package javabasic.nowcoder; import java.util.HashMap; import java.util.Map; public class Main40 { /*分析:两个单链表如果存在第一个公共结点,则后续结点一定都公共, 因为结点里包含next指针,如果第一个公共结点相同,则...
阅读全文
摘要:/** * 输入n个整数,找出其中最小的K个数。 * 例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。 */ package javabasic.nowcoder; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import jav...
阅读全文
摘要:/** * 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 * 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。 * 由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。 * 如果不存在则输出0。 */ package javabasic.nowcoder; import java.util.Arrays; import java.util...
阅读全文
摘要:/** * 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。 * 要求不能创建任何新的结点,只能调整树中结点指针的指向。 */ package javabasic.nowcoder; /* * 采用中序遍历 修改中序遍历,在其中加入一个前驱结点 遍历左子树 当前结点指向左指针指向前驱结点 前驱结点右指针指向当前结点 前驱 = 当前 遍历右子树 */ public clas...
阅读全文
摘要:/** * 输入一个字符串,按字典序打印出该字符串中字符的所有排列。 * 例如输入字符串abc,则打印出由字符a,b,c * 所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 */ package javabasic.nowcoder; import java.util.Arra...
阅读全文
摘要:/** * 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 */ package javabasic.nowcoder; import java.util.ArrayList; public class Main29 { ArrayList> listAll = new ArrayL...
阅读全文
摘要:/** * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 * 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 */ package javabasic.nowcoder; /** 思路: 已知条件:后序序列最后一个值为root;二叉搜索树左子树值都比root小,右子树值都比root大。 1、确定root; 2、遍历序列(除去root结点),...
阅读全文
摘要:/** * 从上往下打印出二叉树的每个节点,同层节点从左至右打印 */ package javabasic.nowcoder; import java.util.ArrayList; import java.util.Queue; import javax.management.Query; class TreeNode27 { int val = 0; TreeNod...
阅读全文
摘要:/** * 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 * 假设压入栈的所有数字均不相等。 * 例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列, * 但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) */ package javabasic.nowcoder...
阅读全文
摘要:/** * 1.选坐标为(0,0),(1,1)...的点记为(start,start)为开始坐标,下一圈开始坐标为(start+1,start+1) * 2.判断是否进入下一圈(即是否打印完成)的条件是row>start*2 && column>start*2 * 3.打印一圈的左上角坐标为(start,start),右下角的坐标为(column-start-1,row-start-1) * 4...
阅读全文
摘要:/** * 先前序遍历这棵树的每个结点,如果遍历到的结点有子结点, * 就交换它的两个子结点,当交换完所有的非叶子结点的左右结点之后,就得到了树的镜像。 */ package javabasic.nowcoder; /* * 操作给定的二叉树,将其变换为源二叉树的镜像。 * 二叉树的镜像定义:源二叉树 8 / \ 6 10 ...
阅读全文
摘要:public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1==null && root2!=null) { return false; } if(root2==null) { return false; } ...
阅读全文
摘要:public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null&&list2==null) { return null; } if(list1==null) { return list2; } if(lis...
阅读全文
摘要:/** * 输入一个链表,输出该链表中倒数第k个结点。 */ package javabasic.nowcoder; public class Main18 { public ListNode18 FindKthToTail(ListNode18 head,int k) { ListNode18 pre = head, last = head; if(k<=0 || head ...
阅读全文
摘要:/** * 输入一个链表,反转链表后,输出链表的所有元素。 */ package javabasic.nowcoder; public class Main19 { public static void main(String[] args) { } public ListNode18 ReverseList(ListNode18 head) { if(head == nu...
阅读全文
摘要:/** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。 * 求该青蛙跳上一个n级的台阶总共有多少种跳法。 */ package javabasic.nowcoder; /* * 链接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 每个台阶可以看作一块木板,让青...
阅读全文
摘要:/** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级。 * 求该青蛙跳上一个n级的台阶总共有多少种跳法。 */ package javabasic.nowcoder; /* * 链接:https://www.nowcoder.com/questionTerminal/8c82a5b80378478f9484d87d1c5f12a4 找规律的解法,f(1) = 1, f(2) = 2,...
阅读全文
摘要:/** * 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 */ package javabasic.nowcoder; /* * 不是不能用递归,递归本质上是栈,可能导致栈溢出,只要避免溢出就可以了,就可以使用尾递归解 * 迭代方法,用两个变量a和b分别记录fn-1和fn-2; */ public class Main10 { p...
阅读全文
摘要:/** * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 * 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 * 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 * NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 */ package javabasic.nowcoder; /* * 采用...
阅读全文

浙公网安备 33010602011771号