学习重点
1.数组:数组与列表最大的不同点是列表中没有索引,其次数组中的元素在内存中是连续存储的,且每个元素占用相同大小的内存;对于数组,计算机会在内存中为其申请一段连续的空间,并且会记下索引为 0 处的内存地址
2.字符串的基本操作对象通常是字符串整体或者其子串;是否可以使用==比较两个字符串取决于所使用的语言是否支持运算符重载
3.使用双指针即使用两个指针分别指向开始和结尾,各自移动,交换数值;第二种双指针方法要注意两个指针的移动时间与移动效果
代码示例
寻找数组的中心索引
public class Solution {
public int PivotIndex(int[] nums) {
if(nums.Length == 0)
return -1;
int leftSum = 0,rightSum = 0;
for(int i=0;i<nums.Length;i++)
{
rightSum+=nums[i];
}
for(int j=0;j<nums.Length;j++)
{
if(j!=0){leftSum+=nums[j-1];}
rightSum-=nums[j];
if(leftSum==rightSum){
return j;
}
}
return -1;
}
}
最长公共前缀
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0)
return "";
String prefix = strs[0];
for (int i = 1; i < strs.length; i++)
while (strs[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length() - 1);
if (prefix.isEmpty()) return "";
}
return prefix;
}
}
反转字符串
class Solution {
public:
void reverseString(vector<char>& s) {
int left=0,right=s.size()-1;
while(left<right)
{
swap(s[left], s[right]);
++left;
--right;
}
}
};
学习心得
通过学习数组,指针发现自己以前有好多好多不会的,大部分的解答都是看下面同学的回答才开始钻研,第一次不熟悉,好好学习,把以前落下的都补上来。