上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页
摘要: 注意:对于insert操作,这个将插入的元素若存在,返回false,否则插入。 对于delete操作,删除成功后返回true;若hashtable中不存在这个元素返回false。 思路:insert和delete操作用unordered_map来实现O(1)的时间复杂度,但是不方便随机取出一个元素; 阅读全文
posted @ 2019-07-29 16:16 爱学英语的程序媛 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 思路:贪心,用min1来记录当前最小的数,min2来记录当前第二小的数。它们的初始值都是最大的数。 阅读全文
posted @ 2019-07-29 15:33 爱学英语的程序媛 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 注意:k可能比数组的长度大,所 k = k%n (n为数组长度)。 思路一:暴力法。循环移动k次。 思路二:先把前 n-k 个数字翻转一下,再把后k个数字翻转一下,最后再把整个数组翻转一下: 1 2 3 4 5 6 7 4 3 2 1 5 6 7 4 3 2 1 7 6 55 6 7 1 2 3 4 阅读全文
posted @ 2019-07-29 15:08 爱学英语的程序媛 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 思路:哈希表,用map实现,(key, value) = (strs[i], index). 将字符串按字典序排序后,若能在map中找到相应的字符串,则对应value+1(value存储的是单词中同构体集合在output中的index),如 ["ate", "eat", "tea"] 对应索引为0; 阅读全文
posted @ 2019-07-28 19:18 爱学英语的程序媛 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 解法一:中心拓展法。从下标为0开始遍历,将每个元素当作回文串中心,向两边拓展。 1)以这个字符为中心的回文串的长度(奇数串); 2)以这个字符和下个字符为中心的回文串的长度(偶数串)。 注意:既要统计回文串为奇数时,又要统计回文串为偶数时。当 s[left]!=s[right] 时,left多减了1 阅读全文
posted @ 2019-07-28 12:09 爱学英语的程序媛 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 思路一:暴力遍历(两重循环会超时==) 思路:kmp算法。 参考链接: https://www.youtube.com/watch?v=3IFxpozBs2I&t=4s 阅读全文
posted @ 2019-07-27 22:04 爱学英语的程序媛 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 思路:判断各种边界条件。 1)首先过滤字符串前面的空格,即找到第一个不为空格的字符; 2)如果第一个字符是+或-,设置flag值; 3)接下来的字符如果在'0' - '9' 范围内,则转换为数字,否则结束循环; 注意上一步中,如果结果已经大于INT_MAX或小于INT_MIN,则直接返回INT_MA 阅读全文
posted @ 2019-07-25 22:36 爱学英语的程序媛 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 思路: 思路:贪心。分别把胃口数组:g 和 饼干尺寸:s,排序;从胃口数组的第一个索引开始,从饼干数组的第一个遍历,看是否能满足它的胃口。 阅读全文
posted @ 2019-07-24 16:03 爱学英语的程序媛 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 找到数组中最近的一对坐标。 思路:先分为左右两部分,分别找最短距离:dl 和 dr,则 d = min(dl, dr) 再合在一起,找左右两个部分那些点到中间边缘的最短距离:若大于d则不考虑了。 阅读全文
posted @ 2019-07-23 22:42 爱学英语的程序媛 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 思路一:定义两个栈(肯定不是O(1)的空间复杂度) class Solution { public: bool backspaceCompare(string S, string T) { //栈 stack<char> s, t; for(char a : S){ if(a == '#'){ if 阅读全文
posted @ 2019-07-23 22:22 爱学英语的程序媛 阅读(250) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 24 下一页