数组基础与刷题总结

数组板块

本板块有关数组基本知识,以及刷leetcode中遇到问题总结,欢迎讨论,不断更新

一、 基本知识

1、数组介绍

在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。最简单的数据结构类型是一维数组。数组—维基百科
数组特点:元素类型一致,存储地址连续(因此可以下标访问)

2、数组定义

定义数组的语法: 类型说明符 数组名 [常量表达式(来表示数组元素个数)]
正确示例:int array[10];
注意:不能用变量来描述数组定义中的元素个数
eg : int size =50; int array[size]; 是错的。

3、数组初始化

(a) 初始化数字数组
可以在定义时直接初始,如:
int array[5] = {1,1,2,3,5}
注意:初始化数组值的个数不能多余数组大小,初始化数组的值不能通过跳过逗号的方式省略。
如:

int array1[5] = {1,2,3,4,5,6}; // 超过数组大小
int array2[5] = {1,2,3, , 5};// 逗号省略,初始化值不能省略
int array3[5] = {1,2,3,4,  }; //逗号省略,初始化值不能省略
int array4[5] = { }; //错误的语法

4、数组的应用

排序:冒泡,快速,插入

二、 数组刷题整理

目前使用的方法:
1.哈希表(unordered_map内部实现也是哈希表)
leetcode 1 Two sum(两数相加)
2.双指针法(一个遍历一个记录,去重复元素好用)
leetcode 26 Remove Duplicates from Sorted Array(在有序数组中删除重复元素)
leetcode 27 Remove Element(删除目标元素)
3.二分查找法
leetcode 35 Search Insert Position.(搜索元素插入数组的位置)
4.kadane’s法(求最大连续子数组)。
leetcode 53 Maximum Subarray (求最大子数组的和 / 高频题)
leetcode 121 Best Time to Buy and Sell Stock(最大盈利)
5.动态规划
leetcode 70 climbing stairs (爬楼梯 / 必会题)
6.使用技巧 / 库函数
leetcode 7 Reverse Integer(翻转一个有符号的整数)
leetcode 9 Palindrome Number(判断是不是回文数)
leetcode 66 Plus One(加一运算)
常用的一些函数:

to_srting(i) // 把i转化为string型
reverser(s.begin(),s.end())// s是字符串,把s倒序
tolower(s), toupper(s)// s是字符型,将s转换成小写,大写。
swap(a,b)//交换a,b元素
isalnum(s)//判断s是不是字母或者数字。是的话为true
isspace(s[i])//i是不是空格
ispunct(s[i])//i是不是标点符号。
sqrt(x)//对x开平方,取整
pow(x,y);//求乘方x^y,pow是power的缩写
if a? b:c ; //三目运算, 如果a为真,那么为b,否则为c**

(继续更新ing)

猜你喜欢

转载自blog.csdn.net/qq_37466121/article/details/85016332