参考自LeetCode上Explore模块的Array & String,作为笔记记录。
Overview 综述
字符串是字符数组,主要了解数组和动态数组之间的区别以及基本操作。理解多维数组的使用,以及双指针技巧的使用。
主要内容:
- 了解
数组
和动态数组
之间的区别; - 熟悉数组和动态数组中的
基本操作
; - 理解
多维数组
并能够掌握二维数组
的使用; - 明白
字符串
的概念以及字符串所具有的不同特性; - 能够运用
双指针技巧
解决实际问题。
Introduction to Array 数组简介
主要了解数组和动态数组。
数组简介
数组用于按顺序存储元素的集合。图示是一位数组的例子。数组中的元素可以随机存取,通过数组索引来识别。
数组的用法示例:
1 |
|
动态数组简介
多数编程语言提供内置的动态数组,例如C++中的vector,Java中的ArrayList。
动态数组用法示例:
1 |
|
练习:寻找数组的中心索引
给定一个整数类型的数组 nums
,请编写一个能够返回数组“中心索引”的方法。
我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。
如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
说明:
nums
的长度范围为[0, 10000]
。- 任何一个
nums[i]
将会是一个范围在[-1000, 1000]
的整数。
解题思路
首先计算数组元素总和,之后顺序遍历数组,如果当前位置左侧的和,乘以2加上当前位置的值等于数组总和,则当前位置为中心索引。
需要注意的是边界值的判断。
用到的测试用例:
1 | [1] |
代码如下:
1 | class Solution { |
其中,C++中对vector元素求和,可使用accumulate
函数,头文件#include <numeric>
如下:
1 | class Solution { |