摘要:
一、问题描述 二、问题解决 应该是很简单了。4行代码解决。 阅读全文
摘要:
一、问题描述 这是问题33的升级版,在数组中有重复元素。 二、问题解决 思路和问题33一样,不同点在于判断nums[left]==nums[middle]的时候不能得出左右哪个是单调递增,哪个是循环递增。这时候简单递增一下left,应为此时left一定不为target,可以使代码进一步往下运行。 和 阅读全文
摘要:
一、问题描述 给定一个升序排列的数组nums,和一个目标数target,找出nums中target的索引范围。 例子:给定数组为{5, 7, 7, 8, 8, 10},target=8。返回{3,4} 二、问题解决 思路一:直接遍历就可以,第一次碰到target的时候记录位置1,继续遍历到不是tar 阅读全文
摘要:
一、问题描述 一个有序数组,将它截成两部分,然后两部分换位置,得到数组nums。比如对于01234567这个数组,分成012和4567这两个部分,然后把这两个部分调换位置,012放在后,4567放在前,假设得到的数组为nums。 二、问题解决 思路一:最简单的遍历一遍,找到和target相等的数,返 阅读全文
摘要:
一、问题描述 给出一个数组,按照字典顺序找出下一个排列。如果给出是最大的,则返回最小 例子:123,下一个比123大的排列是132 321,这是最大的数,返回最小的数123 115,下一个比112大的数是152 二、问题解决 最终要的是这个寻找下一个排列数的思路。 举一个例子,假设有如下数组: 第一 阅读全文
摘要:
一、问题描述 嗯,题目很难理解。 我按我的理解翻译一下:words中有“foo”和“bar”,我们就在s中寻找“foobar”或“barfoo”,返回它们在s中出现的第一个位置。(题目给出words中每一个字符串长度是相等的) 假如说words中有3个字符串,则在s中寻找寻找words中3个字符串的 阅读全文
摘要:
一、问题描述 实现两个int数的相除,返回它们相除的int值,但是不能使用乘法、除法、和mod运算。 二、问题解决 最开始能想到的方法就是不断用被除数去减除数,等到被除数小于0的时候相减了多少轮就是两数相除的int值,但是一个很大的数除以一个很小的数可能会超时,实验一下,果然会超时。 要解决这个问题 阅读全文
摘要:
一、问题描述 实现子串寻找,给定一个str1和str2,在str1中寻找str2第一次出现的位置,返回第一个字符在str1中的位置,如果没有找到则返回-1。 例子:haystack = "hello", needle = "ll",返回2。 二、问题解决 对,没错,这就是KMP算法。 这里写了个简单 阅读全文
摘要:
一、问题描述 给定一个数组v和一个数n,要求删除数组中所有和n向等的数,并且将不为n的数放入数组前面,返回数组长度。 例子:v={3,2,2,3},n=3,返回2,且v的前两项必须为两个2 二、问题解决 这个题目和26题其实是一模一样的,看看26题吧。 三、问题反思 这个题明明和26题一样,写的时候 阅读全文
摘要:
一、问题描述 给定一个排过序的数组,将他们重复的元素移到最后(标准库中unique的效果),返回不重复元素的个数 例子:给定一个数组{1,1,2},将数组变为{1,2,1},返回值为2 二、问题解决 思路还是很简单,记录两个位置,第一个位置向前遍历,每次遇到不等的数就将他位置的数移到后一个位置上,然 阅读全文