这个题目比较恶心,直接进行交换的循环会有重复的交换导致最终结果不符合,顺时针旋转90度,需要先转置,再左右翻转,转置相当于把右上方的部分跟左下方的部分进行交换,中间那一条线是不需要换的。左右翻转相当于把左半部分跟右半部分进行交换,同样的中间那条线不需要交换。func rotate(matrix [][]int) { n := len(matrix) // 先转置 f...
SnowKagura‘s blog
直面生活,热爱生活这道题要求最长的连续序列,所以我们把所有的数录入到哈希表里面,用 map[int]bool,然后遍历这个哈希表,如果对应的 k-1 是不存在的说明这是一个...
这道题需要注意的是k可能不止一位数,所以需要按照下面的规则进行:读取到 [ ,把当前的读取到的字符串和 repeat 值分别存储到一个栈。每次读到 a-z 的字符直接拼接到当前字符串即可读取到数字,累加 repeat 值读取到 ],则需要取出栈内数字和栈内字符串,栈内数字用于把当前字符串重复 k 次,栈内字符串用于拼接在当前字符串的前边作为前缀,这样一套整体的流程下来即可符合题意。func ...
这个题目就是需要判断给定字符串能否由多个相同子串构成,如果可以就返回true。构造一种比较巧妙的方法是将s拼接两次,变成2s,然后掐头去尾,剩下的部分如果...
要找到缺失的第一个正数,就可以把数组范围内的 nums[i] 放到 nums[i]-1 的位置上去,比如 2 放到 1, 3 放到 2,那么最后交换好的数组从头到尾遍历的第一个 nums[i] != i+1 的位置即为缺失的第一个正数。因为这样做最多只产生 n 次 swap,所以最终时间复杂度仍然是 O(n)func firstMissingPositive(nums []int) int ...