1 问题描述30.串联所有单词串 2 解题思路首先,由于words中所有字符串长度相同,要比较words与s: - s从i = 0开始,可以划分为一系列的
1 问题描述1610.可见点的最大数目 2 解题思路利用atan2函数,即可将斜率转化为$-\pi ~ \pi$的角度; 扩充数组,令angle[n + i]
1 问题描述303.区域和检索-数组不可变 2 解题思路利用前缀和数组,使得求区间和时无需再遍历数组求和。 3 代码 cpp class NumArray { private: vector<int> sum; public: NumArray(vector<int> &nums) { sum.resize(nums.size(), 0); sum[0] = nums[0]; for
1 问题描述1769.移动所有球到每个盒子所需的最小操作数 2 解题思路暴力求解,时间复杂度为$\Theta(n^2)$; 可以考虑利用前缀和来降低
1 问题描述424.替换后的最长重复字符 2 解题思路首先,注意一点,子串如果能通过k次替换变成只包含相同字母的子串,那么一定有max_cnt + k
1 问题描述413.等差数列划分 2 解题思路注意到子数组个数$cnt = len - 3 + 1 + len - 4 + 1 + … + 1$,其中len是等差数组的长度,则cnt = (n
1 问题描述88.合并两个有序数组 2 解题思路双指针,由于num1的长度是m + n,因此遍历时,可以考虑针对nums1,从后往前赋值,从而只需要$