![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷题小结
文章平均质量分 79
leedcode 剑指offer
鹿几三三
这个作者很懒,什么都没留下…
展开
-
回溯算法小结
文章目录序言组合总和序言所谓回溯方法,总是用于找到所有组合,所有可能的题目下。需要注意的是,回溯一般分为三个大步骤,分别为:添加可能元素,进行下一个查找,删除末尾元素,这三个步骤。添加可能元素:将当前位置的元素放入临时的列表中,用于暂存这种可能进行下一个查找:考虑在该分布的前提下,下一个可添加的元素。当递归到最有一个可能时,该可能要么成立,放入结果列表中,或者不成立,直接放弃。最有一个元素都已经完成了判断。故而函数返回上一层后,该元素需要被删去,以便在增加另一个元素,考虑另一种可能。组合总和原创 2022-02-26 20:18:21 · 230 阅读 · 0 评论 -
安排机器
题目:小Q的公司最近接到m个任务, 第i个任务需要xi的时间去完成, 难度等级为yi。小Q拥有n台机器, 每台机器最长工作时间zi, 机器等级wi。对于一个任务,它只能交由一台机器来完成, 如果安排给它的机器的最长工作时间小于任务需要的时间, 则不能完成,如果完成这个任务将获得200 * xi + 3 * yi收益。对于一台机器,它一天只能完成一个任务, 如果它的机器等级小于安排给它的任务...原创 2019-09-20 20:25:29 · 183 阅读 · 0 评论 -
按年月日排序
题目:按照年月日进行排序,若年相同则按月排序,若月也相同则按日期排序;解答:#include <iostream>#include <set>#include <algorithm>#include <iterator>using namespace std;class Date{private: int year; ...原创 2019-09-06 09:25:35 · 2039 阅读 · 1 评论 -
输入接口总结
输入接口输入一行数字输入一行字符串输入多行数字输入多行字符串混合输入需分割注意输入一行数字#include<iostream>#include<vector>using namespace std;//已知输入数字的个数int n;cin >> n; //输入个数vector<int> number;for(int i=0;i&...原创 2019-08-22 15:06:02 · 220 阅读 · 0 评论 -
选择问答题汇总
head()和tail()head() 返回列表的第一个元素;tail() 返回列表的删去第一个元素之后的剩余列表;K=(m,n,(p,(q,s)),(h,f)),head[tail[head[tail[tail(K)]]]]tail(K)-------(n,(p,(q,s)),(h,f))tail[tail[K]]--------((p,(q,s)),(h,f))head()--...原创 2019-08-23 21:24:44 · 690 阅读 · 0 评论 -
寻找子串
题目: https://www.nowcoder.com/questionTerminal/266fa434c2b641fc8c5f430de127c64f给出m个字符串S1,S2,…,Sm和一个单独的字符串T。请在T中选出尽可能多的子串同时满足: 1)这些子串在T中互不相交。 2)这些子串都是S1,S2,…,Sm中的某个串。 问最多能选出多少个子串。输入描述:第一行一个数m(1≤m≤...原创 2019-08-23 18:49:45 · 459 阅读 · 0 评论 -
链表——c++
c++ 中的ListNode:定义Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} *};构建新链表:ListNode* l=new ListNode(-...原创 2019-05-12 13:39:56 · 146 阅读 · 0 评论 -
c++编程题——删除链表中重复的节点
删除链表中重复的节点在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5class Solution {public: ListNode* deleteDuplication(ListNode* pHead){ ...原创 2019-04-29 21:36:41 · 1437 阅读 · 0 评论 -
编程题小结
找到两个链表的第一个共同节点位置关键在于认识到,一旦出现共同节点,则两个链表后续所有节点都相同且链表的末尾相同;故而,给两个链表赋指针,利用指针进行遍历和对比。若两个链表不一样长,先将长的链表遍历到与短链表相同长度;再齐头并进对比两个指针;例如:a1 -> a2 -> c1->c2 ->c3; //链表1b1->c1->c2->c...原创 2019-04-15 20:35:46 · 176 阅读 · 0 评论 -
数组中只出现一次的数
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。考虑过程:首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。这个题目的突破口在哪里?题目为什么要强调有一个数字出现一次,其他的出现两次?我们想到了异或运算的性质:任何一个数字异或它自己都等于0。 2 ^ 2 = ...原创 2019-07-26 20:23:11 · 141 阅读 · 0 评论 -
数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。分析:第一种方法:按照数组的顺序依次遍历,直到找到第一个重复的数字并用指针指向它;简单粗暴!耗时长!第二种方法:...原创 2019-07-31 10:12:55 · 105 阅读 · 0 评论 -
c++ 全排列算法
1.对于无重复值的情况** 固定第一个字符,递归取得首位后面的各种字符串组合;* 再把第一个字符与后面每一个字符交换,并同样递归获得首位后面的字符串组合; *递归的出口,就是只剩一个字符的时候,递归的循环过程,就是从每个子串的第二个字符开始依次与第一个字符交换,然后继续处理子串。*2.假如有重复值呢?*由于全排列就是从第一个数字起,每个数分别与它后面的数字交换,我们先尝试加个这样的判断...原创 2019-04-10 19:40:55 · 1619 阅读 · 1 评论 -
二叉树相关编程题
二叉树相关编程题:对称二叉树:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:1)若是对称二叉树则其是镜像的,若是镜像的,则需要左子树的左子树和右子树的右子树相同,且左子树的右子树和右子树的左子树相同。2) 基于此思想可以考虑递归求解,左子树的左子树等于右子树的右子树,则意味着除去左右子树的两个“根”节点,其余都相等(等...原创 2019-05-01 14:37:45 · 676 阅读 · 0 评论 -
剑指offer——逆序对
剑指offer——逆序对题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据,...原创 2019-07-25 21:16:16 · 321 阅读 · 0 评论 -
翻转单词顺序列
题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?分析:实际上,单词顺序翻...原创 2019-07-30 20:40:14 · 142 阅读 · 0 评论