左神
GZY_BUPT
不积跬步无以至千里
展开
-
《程序员代码面试指南》P8:如何仅用递归函数和栈操作逆序一个栈
如何仅用递归函数和栈操作逆序一个栈题目描述:一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1.将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数实现,不能用其他数据结构。题目难度:medium题目分析:本题是要用递归栈的思想将一个栈中元素逆序。代码实现: public static in...原创 2018-08-24 11:01:19 · 213 阅读 · 0 评论 -
《程序员代码面试指南》数组窗口问题——java实现
子数组中最大值最小值不大于给定值问题题目描述:给定数组arr和整数num,返回有多个子数组满足如下情况:max(arr[i…j]) - min(arr[i…j]) <= nummax(arr[i…j])表子数组arr[i…j]中的最大值,min(arr[i…j])表子数组arr[i…j] 中的最小值。题目难度:medium题目思路:思路一:本题可以采用暴力遍历去求解。即遍历...原创 2018-09-20 10:33:49 · 305 阅读 · 0 评论 -
《程序员代码面试指南》容器储水问题——java实现
容器储水问题题目描述:给定一个数组代表一个容器,比如[3,1,2,4],代表0位置是一个宽度为1,高度为3的直方图。代表1位置是一个宽度为1,高度为1的直方图。代表2位置是一个宽度为1,高度为2的直方图。代表3位置是一个宽度为1,高度为4的直方图。所有直方图的底部都在一条水平线上,且紧靠着。把这个图想象成一个容器,这个容器可以装3格的水。给定一个没有负数的数组arr,返回能装几...原创 2018-09-22 16:45:04 · 1012 阅读 · 0 评论 -
《程序员代码面试指南》二叉搜索树转为双向链表——java实现
二叉搜索树转为双向链表题目描述:把一棵搜索二叉树,转化成有序的双向链表。题目难度:medium题目思路:思路一:将二叉树转为双向链表,其中指针对应关系为:二叉树的左右指针分别对应双向链表的前后指针。采用递归的方式分别返回遍历结果的左子树和右子树的头节点。知道左子树的头结点后,则找到头结点的尾节点。最后分别连上左子树的尾节点,head,右子树的头结点。代码实现:/** ...原创 2018-10-25 12:23:16 · 618 阅读 · 0 评论 -
《程序员代码面试指南》有序数组生成平衡搜索二叉树——java实现
有序数组生成平衡搜索二叉树题目描述:给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与sortArr一致。题目难度:medium题目思路:先找到有序数组的中间值,即为二叉树对应的头结点,递归找到该二叉树的左子树和右子树。代码实现:public static Node generateBST(int[] sort...原创 2018-10-25 21:51:27 · 388 阅读 · 0 评论 -
《程序员代码面试指南》字符串拼接为回文串问题——java实现
字符串拼接为回文串问题题目描述:链表words中都是不同的词,如果其中str1加str2之后是回文串,则str1的位置和str2的位置我们需要收集。比如words = [“bat”, “tab”, “cat”]返回[[0, 1], [1, 0]]words = [“abcd”, “dcba”, “lls”, “s”, “sssll”]返回[[0, 1], [1, 0], [3, ...原创 2018-10-23 17:12:52 · 986 阅读 · 0 评论 -
《程序员代码面试指南》将整数字符串转成整数值——java实现
将整数字符串转成整数值 题目描述:给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。【举例】str=“123”,返回123。str=“023”,因为"023"不符合日常的书写习惯,所以返回0。str=“A13”,返回0。str=“0”,返回0。str=“2147483647”,返回2147483647。str...原创 2018-10-29 16:25:18 · 299 阅读 · 0 评论 -
《程序员代码面试指南》跳跃游戏——java实现
跳跃游戏题目描述:给定数组arr,arr[i]==k代表可以从位置i向右跳1~k个距离。比如,arr[2]==3,代表从位置2可以跳到位置3、位置4或位置5。如果从位置0出发,返回最少跳几次能跳到arr最后的位置上。【举例】arr=[3,2,3,1,1,4]。arr[0]==3,选择跳到位置2;arr[2]==3,可以跳到最后的位置。所以返回2。【要求】如果arr长度为N,要...原创 2018-10-29 21:15:02 · 471 阅读 · 0 评论 -
《程序员代码面试指南》二叉树的序列化和反序列化——java实现
二叉树的序列化和反序列化题目描述:二叉树被记录成文件的过程叫作二叉树的序列化,通过文件内容重建原来二叉树的过程叫作二叉树的反序列化。给定一棵二叉树的头节点head,并已知二叉树节点值的类型为32位整型。请设计一种二叉树序列化和反序列化的方案,并用代码实现。【要求】1,实现先序遍历序列化与反序列化2,实现按层遍历序列化与反序列化题目难度: medium题目思路:1、先序遍历序列...原创 2018-10-27 13:18:11 · 526 阅读 · 0 评论 -
《程序员代码面试指南》斐波那契问题——java实现
斐波那契系列问题题目描述:给定整数N,返回斐波那契数列的第N项。题目难度: easy题目思路:斐波那契数列:又称黄金分割数列,以兔子繁殖为例而引出,故又称为“兔子数列”,指的是这样一个数列:1、2、2、3、5、8、13、21、24…,在数学上,斐波那契数列以如下被以递归的方式定义:F(0) = 0F(1) = 1;F(n) = F(n-1) + F(n-2)(n&amp;gt;=2)(...原创 2018-10-30 16:54:11 · 573 阅读 · 1 评论 -
《程序员代码面试指南》调整[0,x)区间上的数出现的概率——java实现
调整[0,x)区间上的数出现的概率题目描述:假设函数Math.random()等概率随机返回一个在[0,1)范围上的数,那么我们知道,在[0,x)区间上的数出现的概率为x (0<x≤1)。给定一个大于0的整数k,并且可以使用 Math.random()函数,请实现一个函数依然返回在[0,1)范围上的数,但是在[0,x)区间上的数出现的概率为x的k次方(0<x≤1)。题目难度:...原创 2018-11-02 22:05:14 · 405 阅读 · 0 评论 -
【LeetCode】21. Merge Two Sorted Lists——java实现
21. 合并两个有序链表题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入: 1->2->4, 1->3->4输出: 1->1->2->3->4->4题目难度:easy题目思路:1、找到两个链表中最小的头节点head。2、让cur1节点为小的头节点,cur2节...原创 2018-09-18 16:27:02 · 242 阅读 · 0 评论 -
《程序员代码面试指南》对变形词字符串分组——java实现
对变形词字符串分组题目描述:如果str1和str2包含的字符种类一样,并且每种字符的个数也 一样,那么str1和str2算作变形词。给定一个字符类型的数组,请把变形词分组。比如 输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [ [“ate”, “eat”,“tea”], [“nat”,“tan”], [“bat”] ]注意:所...原创 2018-09-18 16:02:21 · 307 阅读 · 0 评论 -
【LeetCode】564. Find the Closest Palindrome——java实现
564. 寻找最近的回文数题目描述:给定一个整数 n ,你需要找到与它最近的回文数(不包括自身)。“最近的”定义为两个整数差的绝对值最小。示例 1: 输入: “123” 输出: “121”注意:n 是由字符串表示的正整数,其长度不超过18。如果有多个结果,返回最小的那个。题目难度:hard题目思路:1、要求一个数的回文,首先想到...原创 2018-09-08 10:36:05 · 487 阅读 · 0 评论 -
《程序员代码面试指南》小和问题和逆序对——java实现
小和问题和逆序对题目描述:小和问题:在随机元素,随机数组大小的数组中,找出左边比右边元素小的所有元素之和。 示例1: 数组[4,2,5,1,7,3,6] 第一个元素4比2大,不算小和,5比4和2都大,那就是4+2=6;1比4和2和5都小,不算小和;7比前面的都大,那就是上次小和6+4+2+5+1=18;然后3前面比2和1大,那就是18+2+1=21;最后6比4、2、5、1、3都大...原创 2018-09-05 21:06:37 · 258 阅读 · 0 评论 -
《程序员代码面试指南》整数是否是回文数——java实现
整数是否是回文数题目描述:给定一个整数,判断该数是否是回文数。题目思路:思路一: 可以先把整数转化为String,再转为char类型,然后依次比较第一位和最后一位。若全部相等,则返回true,否则返回false。 思路二: 直接将整数转为StringBuffer,然后利用reverse()方法反转,比较前后两字符串是否相等。 思路三: 直接利用整数的除法与取余特性,比较相...原创 2018-09-06 10:22:40 · 274 阅读 · 0 评论 -
《程序员代码面试指南》打印一个字符串的全部排列——java实现
打印字符串全排列题目1问题描述:对于不含重复元素的字符串,本题要求输入一个字符串,输出该字符串的全排列。示例1: 输入:abc 输出:abc acb bac bca cba cab题目思路:本题要求字符串全排列的问题...原创 2018-09-03 11:36:37 · 600 阅读 · 0 评论 -
《程序员代码面试指南》TwoSum 问题——java实现
TwoSum问题问题描述:题目一:给定一个数组arr,和一个整数aim,请返回哪两个位置的数可以加出aim来。 可以假设每个数组里只有一组答案。示例1: arr = {2, 7, 11, 15},aim= 9 返回{0,1},因为arr[0] + arr[1] = 2 + 7 = 9 题目思路:思路一: 要找出哪两个位置的和等于aim,首先要对数组进...原创 2018-09-06 17:32:26 · 380 阅读 · 0 评论 -
《程序员代码面试指南》P351 不重复打印排序数组中相加和为给定值的所有三元组——java实现
不重复打印排序数组中相加和为给定值的所有三元组题目描述:给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序三元组。 示例1: 输入: arr = [-8,-4,-3,0,1,2,4,5,8,9],k=10 输出: -4,5,9 -3,4,9 -3,5,8 0,1,9 0,2,8 1,4,5题目思路:其实打印...原创 2018-09-06 18:01:44 · 486 阅读 · 0 评论 -
《程序员代码面试指南》单词最短转换路径问题——java实现
单词最短路径问题题目描述:给定两个单词beginWord和endWord,还有一本词典是list类型。 找到所有从beginWord变到endWord的最短转换路径,变动的规则是: 1,一次只能变一个位置的字符 2,每一个转换后的word一定要在list中 3,初始时list中没有beginWord这个词 示例: 输入: beginWord = “hit” ...原创 2018-09-07 11:01:38 · 331 阅读 · 0 评论 -
《程序员代码面试指南》按照左右半区的方式重新组合单链表——java实现
按照左右半区的方式重新组合单链表题目描述:给定一个链表list, 如果: list = 1 调整之后1。 list = 1->2->3 调整之后1->2->3 list = 1->2->3->4 调整之后1->3->2->4 list = 1->2->3->4->5->6 调原创 2018-09-07 16:06:54 · 204 阅读 · 0 评论 -
《程序员代码面试指南》 矩阵最长递增路径问题——java实现
矩阵最长递增路径问题题目描述:给定一个整数矩阵matrix,每个位置你可以向左、右、下、上移动,找到其中最长的递增路径。例如:matrix =[[9,9,4],[6,6,8],[2,1,1]]返回4最长路径是[1, 2, 6, 9].matrix = [[3,4,5],[3,2,6],[2,2,1]]返回4最长路径是[ 2, 4,5, 6]题目难度: me...原创 2018-09-18 11:09:13 · 921 阅读 · 0 评论 -
《程序员代码面试指南》丑数问题——java实现
丑数问题题目描述:规定1是丑数,其他的数如果只含有2或3或5的因子,那么这个 数也是丑数。比如依次的丑数为:1,2,3,4,5,6,8,9,10,12,15… 求第n个丑数题目难度: easy题目思路:思路一:本题要求出第n个丑数,分为两个步骤:1、找丑数: 丑数是含有2或3或5因子的数,因此即从1开始遍历所有整数,如果该数能被2或3或5整除,且除到最后的结果为1,则该数为丑数...原创 2018-09-18 11:48:52 · 207 阅读 · 0 评论 -
《程序员代码面试指南》根据后序数组重建搜索二叉树——java实现
根据后序数组重建搜索二叉树题目描述:给定一个整型数组arr,已知其中没有重复值,判断arr是否可能是节点值类型为整型的搜索二叉树后序遍历的结果。进阶:如果整型数组arr中没有重复值,且已知是一棵搜索二叉树的后 序遍历结果,通过数组arr重构二叉树。题目难度:easy题目思路:题目一:已知给定一个无重复元素的数组,判断数组是否是二叉树后序遍历的结果。1、已知后序遍历的顺序为左右中...原创 2018-11-07 22:34:52 · 698 阅读 · 0 评论