![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LC
ScissorsD_初夏
struct
展开
-
初夏小谈: LC:快乐数问题
问题是这样的:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每一个位置上的数字的平方和,然后重复这个过程,直到这个数变为1,也可能是无限循环但始终变不到1,如果可以变为1,那么这个数就是快乐数。示例:输入: 19输出: true解释: 12 + 92 = 8282 + 22 = 6862 + 82 = 10012 +...原创 2019-04-21 12:25:36 · 307 阅读 · 0 评论 -
初夏小谈:动态规划解决---01背包问题
动态规划利用动态规划进行解决,动态规划的思想就是将大问题化为小问题,求出小问题的解已备在解决大问题中进行使用,而不需要重复计算的方法。即:最优子结构+重叠子问题。动态规划解决问题:两本质三特点四要素。本质:对问题状态的定义。状态转移方程的定义。特点:将一个大问题分割成N个相似小问题。N个小问题只需计算一次。存储N个小问题的解。要素:状态的定义,状态转移方程的状态变化定义,状态...原创 2019-09-02 23:09:39 · 259 阅读 · 0 评论 -
初夏小谈:[NK]:求最小公倍数
题目描述正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35解题思路:1.传统解法:找出最小的那个数,然后都去逐渐除一个数。找出最大的那个。最后两数相乘除以这个数即可。2.辗转相除法示例...原创 2019-05-28 22:56:40 · 256 阅读 · 0 评论 -
初夏小谈:[NK]:两种排序方法
题目描述考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:"car" < "carriage" < "cats" < "doggies < "koala"2.根据字符串的长度排序。例如:"car" < "cats" < "koala" < "doggies" <...原创 2019-05-28 22:44:06 · 328 阅读 · 0 评论 -
初夏小谈:[NK]:Fibonacci数列
题目描述Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-...原创 2019-05-28 20:19:01 · 354 阅读 · 0 评论 -
初夏小谈:[NK]:合法括号序列判断
题目描述对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例:"(()())",6返回:true测试样例:"()a()()",7返回:false测试样例:"()(()()",7返回:false解题思路:在这个题中,就是匹配括号的问题。利用...原创 2019-05-28 20:09:51 · 365 阅读 · 0 评论 -
初夏小谈:LC.107:二叉树的层序遍历
题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解题思路:...原创 2019-04-27 23:04:01 · 226 阅读 · 0 评论 -
初夏小谈:LC.225:用队列实现栈
题目描述:使用队列实现栈的下列操作:push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back,peek/pop from front,size, 和is empty这些操作是合法的。 你所使用的语言也许不支持队列。你...原创 2019-04-27 22:41:14 · 284 阅读 · 0 评论 -
初夏小谈:LC.232:用栈实现队列
题目描述:使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // ...原创 2019-04-27 22:02:56 · 390 阅读 · 0 评论 -
初夏小谈: NC:排序子序列问题
问题:1. 牛牛定义排序子序列为一个数组中一段连续的子序列, 并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A, 他现在有一个任务是把数组A分为若干段排序子序列, 牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示, 牛牛可以把数组A划分为[1, 2, 3]和[2, 2, 1]两个排序子序列, 至少需要划分为2个排序子序列, 所以输出2输入描述:输...原创 2019-04-23 14:24:36 · 496 阅读 · 0 评论 -
初夏小谈:LC.236:找寻二叉树中两个结点的公共祖先
题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: roo...原创 2019-04-27 21:11:01 · 427 阅读 · 0 评论 -
初夏小谈:NC:栈的压入,弹出序列(两种解法,你学会了吗)
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:思路一:题是想走栈的思想路线,那么就设计一个栈来进行,看出...原创 2019-04-27 20:46:53 · 449 阅读 · 0 评论 -
初夏小谈:LC.155:最小栈(O(1)时间每次可以返回栈中元素的最小值)
题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minSta...原创 2019-04-27 19:49:11 · 396 阅读 · 0 评论 -
初夏小谈:LC.150:逆波兰表达式求值
题目:根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) =...原创 2019-04-27 19:18:39 · 230 阅读 · 0 评论 -
初夏小谈:NC:找出数组中出现次数不少于数组一半的整数
题目是这样的:输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n / 2。输出描述:输出出现次数大于等于n / 2的数。示例1 :输入3 9 3 2 5 6 7 3 2 3 3 3输出3本题思路:在N个数中需要找出重复出现次数大于等于数组长度的整数。那么对每一个...原创 2019-04-26 16:45:51 · 255 阅读 · 0 评论 -
初夏小谈:模拟实现特定的map,插入操作
【2020届秋季校招43】模拟map实现insert插入,要求输入map大小,再插入时,如果map还有可用空间就直接插入,如果size已满,就需要剔除最久的数据然后插入,如果map中有该Key,则如果value小于新value就更新value否则不更新。输入:210_123_50_A0 156691805410_123_50_A1 156691805410_123_50_A1 15...原创 2019-09-09 01:13:03 · 271 阅读 · 0 评论