一、学习内容
1、寻找数组的中心索引
- 给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。
注意:中心下标可能出现在数组的两端。
#include <iostream>
using namespace std;
int main() {
int nums[] = { 1,7,3,6,5,6 }, i, j, lsum = 0, rsum = 0, re = -1;
int n = sizeof(nums) / sizeof(nums[0]);
for (i = 1; i < n; i++) {
rsum += nums[i];
}
for (j = 0; j < n; j++) {
if (lsum == rsum) {
re = j;
break;
}
lsum += nums[j];
rsum -= nums[j + 1];
}
return re;
}
Leecode提交结果
2、搜索插入位置
- 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
#include <iostream>
using namespace std;
void main() {
int nums[]={1,3,5,6},target=5;
int begin=0,end=sizeof(strs) / sizeof(strs[0])-1,mid;
while(begin<=end){
mid=(begin+end)/2;
if(nums[mid]==target){
return mid;
}else if(nums[mid]>target){
end=mid-1;
}else{
begin=mid+1;
}
}
return begin;
}
Leecode提交结果
3、最长公共前缀
- 编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string a = "";
int n = strs.size();
if(n == 0)
return a;
if(n == 1)
return strs[0];
for(int j = 0;j<strs[0].size();j++){
for(int i = 1;i<strs.size();i++)
{
if(strs[i][j]!=strs[0][j])
return a;
}
a+=strs[0][j];
}
return a;
}
};
Leecode提交结果
二、学习心得
在这次的学习以及练习当中,发现了自己在语法方面还有待加强,对函数运用限制不熟练,例如sizeof()不能对动态数组使用,使用函数要增加库来调库里的函数等等小常识,通过这几次的练习激发了我对后面题目的求索欲,在接下来的学习中,一步一步的将自己代码能力提高上来,达到应达到的标准!
三、GitHub代码库链接
链接:GitHub库