C++
老衲唐僧法号7
这个作者很懒,什么都没留下…
展开
-
剑指offer——剪绳子(动态规划)
剑指offer——剪绳子(动态规划)题目描述:给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。解题:当绳子的长度小于三的时候,我们可以自己判断出来当时得到的最大乘积。number== 2 res = 1;number==3 res =2;当numbe原创 2020-12-23 22:20:11 · 183 阅读 · 0 评论 -
2020-09-15
剑指offer——丑数把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。通俗易懂的解释:首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z,换句话说一个丑数一定由另一个丑数乘以2或者乘以3或者乘以5得到,那么我们从1开始乘以2,3,5,就得到2,3,5三个丑数,在从这三个丑数出发乘以2,3,5就得到4,6,1原创 2020-09-15 00:08:58 · 89 阅读 · 0 评论 -
2020-09-14
剑指offer——栈的压入弹出序列题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相原创 2020-09-14 09:29:36 · 102 阅读 · 0 评论 -
剑指offer——二进制中1的个数
剑指offer——二进制中1的个数描述:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。用按位与class Solution {public: int NumberOf1(int n) { int res = 0; vector<int>m; int abs ; if(n>=0)abs = n; else abs = -n; for(int原创 2020-08-31 21:02:01 · 113 阅读 · 0 评论 -
剑指offer —— 输入一个链表,反转链表后,输出新链表的表头。
输入一个链表,反转链表后,输出新链表的表头。(c++11)思路:跟之前的那题,反转打印链表有点类似想法就是,将链表中的数据全部读取到一个栈里面,因为反转就是后进先出,再把栈里的数据全部重新建一个新的链表。遇到的问题是:分不清NULL 和nullptr 卡了很久/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {p原创 2020-08-14 10:26:26 · 141 阅读 · 0 评论 -
剑指offer——用两个栈实现队列
剑指offer——用两个栈实现队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:两个栈 ,栈A专门用来表示Push ,栈B专门用来表示Pop,当需要Push的时候,应该先检查栈B里面还有没有之前留着的数据,如果有,应该先把B中的数据全部转移到A中,再进行Push操作,这样才可以不改变他们的相对出入顺序。同理当需要Pop的时候,先检查栈A中是否还存在数据,如果有,全部转移到栈B中,再进行Pop操作。(第一个不用看解题自己做出来的题)class Solution原创 2020-08-11 20:41:03 · 83 阅读 · 0 评论 -
剑指offer——从尾到头打印链表
剑指offer——从尾到头打印链表输入一个链表,按链表从尾到头的顺序返回一个ArrayList。(C++11)一开始的想法是:建两个vector A、B,一个vector A正序保存链表里面的内容,第二个vector B 直接用下标读取对应A的值(从最后一个数开始保存),但是一直没有通过。(希望有大佬帮忙解答一下)class Solution {public: vector<int> printListFromTailToHead(ListNode* head) {原创 2020-08-11 10:37:39 · 74 阅读 · 0 评论 -
二维数组中的查找
剑指offer——二维数组中的查找在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:从二维数组的右上角或者左下角开始。(我的是从右上角开始的),如果目标整数比这个数大,应该向下查找(row++),如果这个数比数组中的这个数小,应该向左查找(col–)。代码如下:class Solution {public: bool Find(int tar原创 2020-08-06 09:44:09 · 73 阅读 · 0 评论 -
LeetCode 最长回文字符串——动态规划算法
class Solution {//动态规划public: string longestPalindrome(string s) { // write code here //动态规划法 if(s.size()<=1) {//如果是空的字符串则返回原本的字符串 return s; } bool temp[s.size()][s.size()]; //建立二.原创 2020-07-09 19:48:12 · 112 阅读 · 0 评论