随笔分类 - 剑指offer
摘要:题目: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 初次拿到这个题目,最直接的想法是:遍历整个数组,
阅读全文
摘要:题目: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。 初次拿到这个题目,我们当然知道采用累乘的方法。但是傻子都知道这种做法,时间复杂度自然是O(n)级别的。有没有更为简单的做法呢? 有的,那就
阅读全文
摘要:快速排序作为一种优秀的排序算法,我们先来给出其核心思想:递归的,让正确的元素出现在正确的位置。 也就是快速排序有两大要点: 让正确的元素出于正确的位置 递归 让正确的元素出于正确的位置 比如一组数据:5 7 2 4 3 6 9 8;我们知道当这个数组排好序后: 2出现在索引为0的位置,且它前面的数都
阅读全文
摘要:题目: 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4, 分析: 思路一:我们可以利用STL库的sort函数,先将数组排序(时间复杂度O(nlogn),再选前K个数。 代码如下: vector<int> GetLeastNumb
阅读全文
摘要:题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路:这个题目是典型的按行打印二叉树,但是不同于之前都是从左至右打印那种顺序(都是从左至右的是使用栈)。这个题目的本质是:下一次的打印都是倒叙的,
阅读全文
摘要:题目如下: 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 想法1:遍历每个自然数,判断其是否是丑数,如果是计数器+1,直到计数器为N。当然了,这是一种十分朴素的方
阅读全文
摘要:题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 这个题目的思路如下: 举例: 二叉树中有两条和为22的路径:{10,5,7}和{10,12
阅读全文
摘要:题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路分析: 由于是二叉搜索树,即BST树。则其中序遍历就是按照大小顺序排列的。后续遍历就是:先遍历左子树,再遍历右子树,再遍历根节点。而要遍历的树是BS
阅读全文
摘要:题目: 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 拿到这个题目,我们应该定义什么情况下是子结构: 当B的头节点等于A的头节点,并且左右子树的头节点也相等,则返回true,否则我们在A的左子树或者A的右子树中继续判断: 看下面代码: bool HasS
阅读全文
摘要:网址:https://blog.csdn.net/weixin_42139375/article/details/82768494 该网址给出了所有题目的解答思路!
阅读全文
摘要:题目; 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 即根据二叉树的前序遍历结果和中序遍历结果,求解二叉树。
阅读全文
摘要:题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路: 讨论思路之前,先分析题目让我们做什么?删除重复节点,返回头节点。 对此,我将此问题描述成两步: 找到头节点 构
阅读全文
摘要:题目: 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解答: /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ clas
阅读全文
摘要:题目: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。 这个题的难点在哪里?就是要我们对于数值类字
阅读全文
摘要:动态规划通常是一个很难的问题。我先分享一个大V写的文章,大家可以看看人家对于动态规划的理解: https://www.zhihu.com/question/23995189/answer/1094101149?utm_source=com.tencent.tim&utm_medium=social&
阅读全文
摘要:题目: 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不
阅读全文
摘要:题目: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子...
阅读全文
摘要:题目: 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意
阅读全文
摘要:题目: 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路: 分析:实现两个是相加不用四则运算,根据计算机中的运算不用四则运算那么肯定是位运算了。 (以下分析来自剑指offer)比如我们计算5+17=22这个结果,世界上,我们可以分为3个步骤计算,第一步各位数相加不
阅读全文
摘要:题目如下: 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a
阅读全文
浙公网安备 33010602011771号