随笔分类 -  刷题

Practise and summarize make perfect!
摘要:题目 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。 解法 这道题感觉如果没有创建树的话也能过,因为是二叉查找树,那最优的情况肯定就是按照满二叉树的方式去创建,那么只要简单计算一下层数就 阅读全文
posted @ 2018-07-24 11:46 MrYun 阅读(227) 评论(0) 推荐(0)
摘要:题目 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。 给定指向树根结点的指针TreeNode root,请返回一个bool,代表这棵树是否平衡。 解法 这道题其实就是判断平衡二叉树,我们可以从root开始递归检查每个子树的高度,如果子树是平衡的 阅读全文
posted @ 2018-07-23 10:16 MrYun 阅读(131) 评论(0) 推荐(0)
摘要:题目 请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。 给定一个操作序列int[][2] ope(C++为vector ),每个操作的第一个数代表操作类型,若为1,则为push操作, 阅读全文
posted @ 2018-07-22 10:10 MrYun 阅读(136) 评论(0) 推荐(0)
摘要:题目 有一些数的素因子只有3、5、7,请设计一个算法,找出其中的第k个数。 给定一个数int k,请返回第k个数。保证k小于等于100。 测试样例: 解法 主要就是在于isPrime这个函数的判断上,只能有3、5、7这三个素因子,不能有11这样的;所以就可以建立一个循环来判断,首先肯定不会为偶数,偶 阅读全文
posted @ 2018-07-21 11:32 MrYun 阅读(308) 评论(0) 推荐(0)
摘要:题目 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。 测试样例: 解法 犯了一个非常 阅读全文
posted @ 2018-07-21 10:46 MrYun 阅读(98) 评论(0) 推荐(0)
摘要:题目 有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。 给定一个操作序列int[][2] ope(C++中为vector )代表所有事件。若第一个元素为1,则代表 阅读全文
posted @ 2018-07-20 11:25 MrYun 阅读(283) 评论(0) 推荐(0)
摘要:题目 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区 阅读全文
posted @ 2018-07-19 19:48 MrYun 阅读(164) 评论(0) 推荐(0)
摘要:题目 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。 给定一个N阶方阵int "][" mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector ),保证n小于等于300,矩阵中的元素为int范围内。 测试样例: 解法 这道题可以额外设置两个标志数组ro 阅读全文
posted @ 2018-07-19 19:17 MrYun 阅读(160) 评论(0) 推荐(0)
摘要:题目 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 示例: 解答 看到这道题的第一想法一定是遍历,最为简单。但是这道题是属于动态规划知识点的,所以肯定有一些小技巧。 实际上,我们可以创建一个数组dp,令他保存从第0项到第j项的和。在 阅读全文
posted @ 2018-07-09 21:08 MrYun 阅读(128) 评论(0) 推荐(0)
摘要:题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。 例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6, 3,5, 7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [ 阅读全文
posted @ 2018-07-08 15:58 MrYun 阅读(420) 评论(0) 推荐(0)
摘要:题目 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost "i" 。 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。 解答 动态规 阅读全文
posted @ 2018-07-08 11:39 MrYun 阅读(168) 评论(0) 推荐(0)
摘要:题目 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode A,ListNode B,请返回A+B的结果(ListNode )。 测试样例: 解法 个位排在链表首部,进位就可以一位 阅读全文
posted @ 2018-07-07 23:18 MrYun 阅读(128) 评论(0) 推荐(0)
摘要:题目 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 解法 这道题自己最初的思路是这样的,首先找到给定值x的那个节点为px,然后按下图 阅读全文
posted @ 2018-07-07 20:55 MrYun 阅读(214) 评论(0) 推荐(0)
摘要:题目 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true 解法 这道题并不难,主要是题目中这句话 确定你只能访问该节点 ,这意味着你不能访问到这个节点之前的节点,简而言之就是你不能删除该节点。换一个角 阅读全文
posted @ 2018-07-02 22:48 MrYun 阅读(138) 评论(0) 推荐(0)
摘要:题目 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母 阅读全文
posted @ 2018-06-29 10:32 MrYun 阅读(126) 评论(0) 推荐(0)
摘要:题目 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。 给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。 测试样例: 解答 题目要求相当于“原地算法”,所以就可以简单的把字符串 阅读全文
posted @ 2018-06-29 10:13 MrYun 阅读(193) 评论(0) 推荐(0)
摘要:题目 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。 测试用例 阅读全文
posted @ 2018-06-29 10:03 MrYun 阅读(125) 评论(0) 推荐(0)
摘要:前言 这是一篇个人刷题导向博客 2018.5 2018.6 最近压力太大、不顺心的时候也很多。一方面在阿里5面的时候,回答算法问题不是很好,出的智力题自己也没答出来,感觉可能要跪,自己的基础还是太差.........同时最近在考试月,各种考试即使复习了,在考场上还是出了各种问题;加上导师布置的论文和 阅读全文
posted @ 2018-06-21 11:22 MrYun 阅读(180) 评论(0) 推荐(0)
摘要:前言 最近自己的学长面试的时候遇到这一道题了,然后把这道题出给了我。我的第一想法是根据前序遍历建立一个树结构,然后根据能否建立树来判断。但是题目要求不能重建树,所以自己确实不会做。在网上看了别人的解答才恍然大悟!这里总结一下大神们的解法。 关于istringstream 首先我们肯定要用istrin 阅读全文
posted @ 2018-06-15 19:33 MrYun 阅读(461) 评论(0) 推荐(0)
摘要:[TOC] 二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路:从右上角的元素进行判断,如果大于target说明这一列肯定都不是,所以将列数见一;如果小于t 阅读全文
posted @ 2018-06-12 21:10 MrYun 阅读(261) 评论(0) 推荐(0)