LeetCode刷题记录(一)
最近开始在LeetCode上面做题,想想应该做一个记录,以便以后看到类似的问题及时查阅,同时也能够将做题时的思路记录下来,将这些思路整理归纳,形成一套我自己的解题思路。当然,算法题只做一次是不够的,需要多次的练习,可能每次的想法都不太一样,在这里我只将当时做题的想法记录下来,不一定是这道题目的最优解,以后发现更好的解法的时候我也会及时更新。因为是刚开始做题,所以除了题目特殊要求之外,我暂时还未完全考虑优化算法的时间和空间复杂度,后续再做的时候就需要考虑这方面的问题了。
我没有按照题目的顺序往下面做,而是先挑选卡片进行专项练习的,最近我做的是数组和字符串卡片下面的题目,也是相对较为简单的内容。
1、寻找数组的中心索引
题目:
我的思路:
- 首先需要计算数组所有元素的和sum;
- 然后遍历数组每个元素,计算剔除当前元素后数组所有元素的和tmp;
- 计算当前元素左侧所有元素的和;
- 如果左侧元素的和*2等于tmp,说明当前元素左右两侧的和相同,当前元素的索引即是答案
按照这个思路实现的代码如下:
class Solution {
public int pivotIndex(int[] nums) {
if(nums.length == 0) {
return -1;
}
//1、计算数组所有元素的和
int sum = 0;
for(int num : nums) {
sum += num;
}
int index = -1;
//2、遍历数组
for(int i = 0; i < nums.length; i++) {
//3、计算剔除当前元素后数组所有元素的和tmp
int tmp = sum - nums[i];
//4、计算当前元素左侧所有元素的和