摘要: 因为字符串可以按照字典序比较大小,所以可以自己写一个排序规则cmp,然后对数组中的所有整数转换成字符串之后再按照自己定义的规则排序。 排序之后,再将所有字符串连接起来,就是它们能够组成的最大整数。 注意特殊情况的判断,如果数组全是0,我们不想要输出"00000...00000"这种情况,只要输出一个 阅读全文
posted @ 2020-08-02 21:29 machine_gun_lin 阅读(103) 评论(0) 推荐(0)
摘要: 这题题目描述的有点不清楚,题意是给一个字符串,如果有某个子串(长度为10)重复出现了,就记录到一个数组里,最后返回的数组就是重复出现的子串组成的数组。 因为子串长度固定为10,所以遍历一遍就行,每个子串都记录到一个set里,这个set就是判断子串是否重复出现了,如果重复出现了,就记录到数组里。 但是 阅读全文
posted @ 2020-08-02 21:08 machine_gun_lin 阅读(84) 评论(0) 推荐(0)
摘要: 要实现二叉搜索树的迭代器,判断当前元素是否有下一个元素和知道下一个元素是多少? 好办,二叉搜索树的中序遍历序列不是升序的嘛,那我们就可以对二叉搜索树中序遍历一遍记录到一个全局变量数组里面,然后要判断是否有下一个元素和下一个元素是多少就很简单了。 代码如下: /** * Definition for 阅读全文
posted @ 2020-08-02 20:31 machine_gun_lin 阅读(139) 评论(0) 推荐(0)
摘要: 参考这个链接 直接计算阶乘,再求0的个数肯定会溢出,因为阶乘增长的很快。 所以需要观察一下规律,阶乘里出现0,肯定是能被10整除,而10只能由2*5组成,所以问题就转换为阶乘里有几对2和5. 由于2每两个数就出现一次,5要每5个数出现一次,所以阶乘里2的数量肯定比5多,所以问题又转换为寻找阶乘里5的 阅读全文
posted @ 2020-08-02 20:16 machine_gun_lin 阅读(105) 评论(0) 推荐(0)
摘要: 把每一位的字母转换成1~26的数字,再乘上pow(26, x),x是当前字符的位置到字符串末尾的距离,比如最后一个字母,就乘上26的0次方,也就是1. 倒数第二个字母,就乘上26的1次方,依次类推。 class Solution { public: int titleToNumber(string 阅读全文
posted @ 2020-08-02 18:32 machine_gun_lin 阅读(93) 评论(0) 推荐(0)
摘要: 遍历一遍数组,对所有元素的出现次数做哈希。 class Solution { public: int majorityElement(vector<int>& nums) { unordered_map<int, int> hash; int size = nums.size(); for(int 阅读全文
posted @ 2020-08-02 18:17 machine_gun_lin 阅读(67) 评论(0) 推荐(0)
摘要: 逆序来求字符串,每次把当前数字n对26取余,也就是当前这一位的字母,加到字符串里。 然后数字n整除26,再继续判断是否还能添加字符。 class Solution { public: string convertToTitle(int n) { string res; while(n != 0) { 阅读全文
posted @ 2020-08-02 18:09 machine_gun_lin 阅读(66) 评论(0) 推荐(0)
摘要: 既然题目都说了数组是升序的,那就双指针分别指向数组开头末尾,然后判断两个指针指向的数是否和target相等,如果和小于target,那么左指针右移,这样就可以让和增加了,如果和大于target,那么让右指针左移,这样就可以让和减小了,一直这样操作直到和等于target或者左右指针相遇。 代码如下: 阅读全文
posted @ 2020-08-02 16:33 machine_gun_lin 阅读(62) 评论(0) 推荐(0)