1. 程式人生 > >陣列基礎與刷題總結

陣列基礎與刷題總結

陣列板塊

本板塊有關陣列基本知識,以及刷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)