其他分享
首页 > 其他分享> > 数据结构基础训练 数组与字符串

数据结构基础训练 数组与字符串

作者:互联网

数据结构基础训练 数组与字符串

学习重点:掌握数组与字符串的基本用法

1.数组中的元素,是通过访问索引的方式来读取的,索引一般从 0 开始。
2.对于数组,计算机会在内存中为其申请一段 连续 的空间,并且会记下索引为 0 处的内存地址。
3.查找元素时,需从数组开头逐步向后查找。如果数组中的某个元素为目标元素,则停止查找;否则继续搜索直到到达数组的末尾。
4.删除元素与插入元素的操作类似,当我们删除掉数组中的某个元素后,数组中会留下 空缺 的位置,而数组中的元素在内存中是连续的,这就使得后面的元素需对该位置进行 填补 操作。
5.对于不同的编程语言中,字符串可能是可变的,也可能是不可变的。不可变意味着一旦字符串被初始化,你就无法改变它的内容。
在某些语言(如 C ++)中,字符串是可变的。 也就是说,你可以像在数组中那样修改字符串。
在其他一些语言(如 Java、Python)中,字符串是不可变的。

例题及代码

例题1:寻找数组的中心索引
给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。
核心代码:
class Solution {
public:
int pivotIndex(vector& nums) {
int n = nums.size();
if(n == 0)
return -1;
int left = 0,right = 0;
for(int i = 1;i<nums.size();i++)
right += nums[i];
for(int i = 0;i<n;i++)
{
if(left == right)
return i;
else
{
left += nums[i];
right -= nums[i+1];
}
}
return -1;
}
};
测试用例及执行结果:在这里插入图片描述
例题2:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(假设数组中无重复元素)。
核心代码:
class Solution {
public:
int searchInsert(vector& nums, int target) {
int left=0,right=nums.size()-1;
while(left<=right)
{
int mid=(left+right)/2;
if(nums[mid]==target)
return mid;
else if(nums[mid]<target)
left=mid+1;
else
right=mid-1;
}
return left;
}
};
测试用例及执行结果:在这里插入图片描述
例题3:编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。
核心代码:
class Solution {
public:
string longestCommonPrefix(vector& strs) {
string s="";
if(strs.size()==0) return s;
for(int j=0;j<strs[0].size();j++){
bool flag=true;
for(int i=1;i<strs.size();i++){
if(strs[i][j]!=strs[0][j]){
flag=false;break;
}
}
if(flag)
s=s+strs[0][j];
else
break;
}
return s;
}
};
测试用例及执行结果:在这里插入图片描述

学习心得

数组与字符串在计算机数据结构中占据着重要的地位,熟练掌握数组及字符串的各种操作对我们以后的编程技术具有重要作用。

题目及代码链接:https://leetcode-cn.com/leetbook/read/array-and-string/ybfut/

标签:return,nums,int,基础训练,数组,字符串,数据结构,left
来源: https://blog.csdn.net/qq_50617819/article/details/114857415