学习历程
SyVary
形单影只
展开
-
调整正整数N 数字的顺序变为M。求所有可能中满足M>N中最小M
题目,给定正整数,调整正整数N,使其变为新的数字M。在所有可能中,找到使M>N,且M最小的那个如果不存在则返回-1样例输入12输出21题解倒叙遍历,如果如果之调整一位数的话,那么调整的这位数一定和比这位数高的位数中,第一个比它小的数字交换例如,123321.对于[4]=2来讲,比他位高,还小的就只有[0]=1,那么交换结果位223311例如,123321.对于[1]=2来讲,比他位高,还小的就只有[0]=1,那么交换结果位123321对于剩下的0234来讲。都是没有比他小的数了。那原创 2020-08-09 16:07:57 · 3480 阅读 · 0 评论 -
删除一些字符 后最长回文串 空间优化(不同于转换为求最长公共子序列)
原题给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?大黄有故事 2016-12-15 1353浏览量简介: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? 输出需要删除的字符个数。 输入描述: 输入数据有多组,每组包含一个字符串s,且保证:1给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包原创 2020-08-07 13:28:08 · 597 阅读 · 0 评论 -
学习历程-整数中1出现的次数(从1到n整数中1出现的次数)
题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。理解如 11 ,个位为1,十位为1,所有存在两个1,1101中就是三个1思路例如1~11中,个位的1有多少呢?2个,分别是1和11。十位的1有多少呢,2个,10、11。我们可以这样理原创 2020-07-07 22:34:36 · 181 阅读 · 0 评论 -
学习历程-把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路数据分为九组,开头为1~9,分别比较后再按照1~9顺序拼接原创 2020-07-07 21:12:26 · 127 阅读 · 1 评论 -
学习历程-第一个只出现一次的字符
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)思路1.hash储存每个字符出现次数,记录每个字符第一次出现位置(队列)。2.访问队列,如果这个位置对应的字符再hash中为出现了一次,就返回队列里储存的值(出现位置),否则出队下一个,直到找到或者队列为空返回-1注:出现 1次 、 无数次 或者 没出现,其中没出现和出现无数次 再最后 判断时 等同。可以使用位运原创 2020-07-06 22:42:42 · 128 阅读 · 0 评论 -
学习历程-二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路对于中序遍历遍历顺序为 左中右1.如果这个节点有右孩子,那么根据顺序。可以得出下一个点为右子树最“左侧”的那个点,2.如果这个节点没有右孩子,这代表这个点所代表的子树已经遍历完了,需要回到其父亲那里看看情况2.1.没有右孩子,而且没父亲,那这个节点是根节点,这个节点遍历完了代表整颗树都遍历完了,返回null,2.2.没有右孩子,而且是父亲的左孩子,根原创 2020-06-29 20:05:45 · 84 阅读 · 0 评论 -
学习历程-对称二叉树
题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。理解一颗二叉树,判断其根节点的左枝和右枝是否为镜像思路同步遍历,以二叉树根节点 左孩子和右孩子 为根节点,进行同步反向遍历,只要有一个点不同,那就是不对成。反之对称class Solution {public: /* 镜像遍历 root1、root2为两个要判断的节点 */ bool BianLi(TreeNode* ro原创 2020-06-29 19:36:56 · 3964 阅读 · 0 评论 -
学习历程-数据流的中位数
原题如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解读,有一个会不断增长的数据,一直在添加新的数。需要求的每次新加数后,求整体的中位数(从第一个数开始到新的数)例如输入 1中位数 1再输入 2中位数 1.5再输入 3中位数 2再输入 0中位数 0.5原创 2020-06-22 21:03:03 · 100 阅读 · 0 评论 -
学习历程-存在环形的链表中,找出起始点
原题给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。理解一段链表,无父指针,其内可能存在环形结构,即遍历时会在某个位置的下一节点指向已经遍历过的某个位置,求发生错误位置解非原创解法设定两个指针。一快(f)(一次走两步)一慢(s)(一次一步),一同出发,因环形链表,两点会在环形内相遇图中,a为起始点到环形开始点的路程,b为进入环形后,相遇点到环形开始点距离,c为环形总长去掉b的距离,途中红色竖线为相遇点,黄色表示末尾点指向之前的点,也是就是指向环型开始的点这两个指针原创 2020-06-23 18:40:38 · 174 阅读 · 0 评论 -
学习历程-寻找字符流中只出现一次的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。理解在一个不断增长的字符串中,寻找第一个 只出现 一次的字符,例如:go中,g、o都只出现一次,但是g比o靠前,解法使用hash储存字符串,因为只需要直到第一个只出现一次的,不需要直到源顺序,我们只需要保存字符串出现过原创 2020-06-27 18:08:53 · 107 阅读 · 0 评论 -
学习历程-.和*正则表达式匹配
题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配理解x表示,x可以出现多次,也可以一次都不出现,那么“aaa”和“a”匹配,和“aaa”匹配,和“aaaa”匹配,和“aaaa”也匹配,这代表,在遇到*的时候,在从遇到*之后与*前的字符匹配的所有字串。都有可能原创 2020-06-27 21:07:27 · 173 阅读 · 0 评论 -
学习历程-矩阵中的路径
题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如a|b|c|es| f|c|sa|d|e|e矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。思路遍历整个数组,找到开头,然后对这个开头进行匹配查找原创 2020-06-29 19:23:06 · 2206 阅读 · 0 评论