随笔分类 -  《程序员面试金典(第6版)》

摘要:题目: 给定一个放有字符和数字的数组,找到最长的子数组,且包含的字符和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端点最小的。若不存在这样的数组,返回一个空数组。 示例 1: 输入: ["A","1","B","C","D","2","3","4","E","5","F","G"," 阅读全文
posted @ 2020-03-20 16:16 silentteller 阅读(352) 评论(0) 推荐(0)
摘要:题目: 数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入:[9,6,4,2,3,5,7,0,1] 输出:8 分析: 先利用高斯求和,然后依次 阅读全文
posted @ 2020-03-20 15:30 silentteller 阅读(218) 评论(0) 推荐(0)
摘要:题目: 设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。 示例: 输入: a = 1, b = 1 输出: 2 提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数 分析: 剑指Offer-48.不用加减乘除做加法(C++/Java)参考这篇讲解。 程序: class So 阅读全文
posted @ 2020-03-20 15:26 silentteller 阅读(242) 评论(0) 推荐(0)
摘要:题目: 给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。 示例 1: 输入: "3+2*2" 输出: 7 示例 2: 输入: " 3/2 " 输出: 1 示例 3 阅读全文
posted @ 2020-03-20 15:14 silentteller 阅读(471) 评论(0) 推荐(0)
摘要:题目: 设计和构建一个“最近最少使用”缓存,该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值),并在初始化时指定最大容量。当缓存被填满时,它应该删除最近最少使用的项目。 它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key)  阅读全文
posted @ 2020-03-20 14:48 silentteller 阅读(490) 评论(0) 推荐(0)
摘要:题目: 设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。 示例 1: 输入: nums = [5,6,5], target = 11 输出: [[5,6]] 示例 2: 输入: nums = [5,6,5,6], target = 11 输出: [[5,6],[5,6] 阅读全文
posted @ 2020-03-18 17:25 silentteller 阅读(244) 评论(0) 推荐(0)
摘要:题目: 给定两个整数数组,请交换一对数值(每个数组中取一个数值),使得两个数组所有元素的和相等。 返回一个数组,第一个元素是第一个数组中要交换的元素,第二个元素是第二个数组中要交换的元素。若有多个答案,返回任意一个均可。若无满足条件的数值,返回空数组。 示例: 输入: array1 = [4, 1, 阅读全文
posted @ 2020-03-18 17:13 silentteller 阅读(293) 评论(0) 推荐(0)
摘要:题目: 在老式手机上,用户通过数字键盘输入,手机将提供与这些数字相匹配的单词列表。每个数字映射到0至4个字母。给定一个数字序列,实现一个算法来返回匹配单词的列表。你会得到一张含有有效单词的列表。映射如下图所示: 示例 1: 输入: num = "8733", words = ["tree", "us 阅读全文
posted @ 2020-03-18 16:58 silentteller 阅读(413) 评论(0) 推荐(0)
摘要:题目: 你有一个用于表示一片土地的整数矩阵land,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。 示例: 输入: [ [0,2,1,0], [0,1 阅读全文
posted @ 2020-03-18 16:23 silentteller 阅读(1050) 评论(0) 推荐(0)
摘要:题目: 给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 分析: 比较简单的一道题,注意输入值为负数的情况。 程序: class Solutio 阅读全文
posted @ 2020-03-16 15:05 silentteller 阅读(389) 评论(0) 推荐(0)
摘要:题目: 给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。 示例: 输入: [1,2,4,7,1 阅读全文
posted @ 2020-03-16 15:00 silentteller 阅读(419) 评论(0) 推荐(0)
摘要:题目: 珠玑妙算游戏(the game of master mind)的玩法如下。 计算机有4个槽,每个槽放一个球,颜色可能是红色(R)、黄色(Y)、绿色(G)或蓝色(B)。例如,计算机可能有RGGB 4种(槽1为红色,槽2、3为绿色,槽4为蓝色)。作为用户,你试图猜出颜色组合。打个比方,你可能会猜 阅读全文
posted @ 2020-03-16 13:18 silentteller 阅读(433) 评论(0) 推荐(0)
摘要:题目: 给定一个二维平面及平面上的 N 个点列表Points,其中第i个点的坐标为Points[i]=[Xi,Yi]。请找出一条直线,其通过的点的数目最多。 设穿过最多点的直线所穿过的全部点编号从小到大排序的列表为S,你仅需返回[S[0],S[1]]作为答案,若有多条直线穿过了相同数量的点,则选择S 阅读全文
posted @ 2020-03-16 13:08 silentteller 阅读(381) 评论(0) 推荐(0)
摘要:题目: 给定两个正方形及一个二维平面。请找出将这两个正方形分割成两半的一条直线。假设正方形顶边和底边与 x 轴平行。 每个正方形的数据square包含3个数值,正方形的左下顶点坐标[X,Y] = [square[0],square[1]],以及正方形的边长square[2]。所求直线穿过两个正方形会 阅读全文
posted @ 2020-03-15 15:06 silentteller 阅读(303) 评论(0) 推荐(0)
摘要:题目: 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例: 输入:shorter = 1longer = 2k = 3输出: 阅读全文
posted @ 2020-03-15 14:38 silentteller 阅读(523) 评论(0) 推荐(0)
摘要:题目: 给定N个人的出生年份和死亡年份,第i个人的出生年份为birth[i],死亡年份为death[i],实现一个方法以计算生存人数最多的年份。 你可以假设所有人都出生于1900年至2000年(含1900和2000)之间。如果一个人在某一年的任意时期都处于生存状态,那么他们应该被纳入那一年的统计中。 阅读全文
posted @ 2020-03-15 14:22 silentteller 阅读(2529) 评论(0) 推荐(0)
摘要:题目: 给定一个整数,打印该整数的英文描述。 示例 1: 输入: 123输出: "One Hundred Twenty Three"示例 2: 输入: 12345输出: "Twelve Thousand Three Hundred Forty Five"示例 3: 输入: 1234567输出: "O 阅读全文
posted @ 2020-03-14 15:21 silentteller 阅读(282) 评论(0) 推荐(0)
摘要:题目: 编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。 示例: 输入: a = 1, b = 2 输出: 2 分析: 利用两数的和加上两数差的绝对值除以2得到较大的数。 不过Math.abs()中判断了数字大于还是小于0; https://leetcode- 阅读全文
posted @ 2020-03-14 14:36 silentteller 阅读(296) 评论(0) 推荐(0)
摘要:题目: 给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差 示例: 输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}输出: 3,即数值对(11, 8)提示: 1 <= a.length, b.length <= 10 阅读全文
posted @ 2020-03-14 14:09 silentteller 阅读(254) 评论(0) 推荐(0)
摘要:题目: 设计一个算法,算出 n 阶乘有多少个尾随零。 示例 1: 输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2: 输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。 分析: 计算阶乘后0的个数实际上就是在数5 阅读全文
posted @ 2020-03-14 13:51 silentteller 阅读(182) 评论(0) 推荐(0)