iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

前面花了很多篇幅介紹陣列和鏈結陣列,第三個Explore Card 還是跟陣列有關,將會介紹陣列(Array)動態陣列(Dynamic Array)多維陣列(Multidimensional Array)以及字串(String)


Dynamic Array

就如這個系列文第一篇所提到,當我們創建陣列時需要指定它的長度,並且在之後不能更改,這代表著陣列儲存元素滿載就無法新增多餘數量的元素,除非重新創建一個新的陣列。

為了解決陣列在空間使用上的不便,許多程式語言都會另外提供動態陣列(Dynamic Array),它與陣列相同,可以隨機存取某一索引值的元素但它的長度可以動態的調整

它的實現方法通常是在內部建立一個固定大小的陣列,當元素數量超出容量時,它會自動擴展為更大的陣列,這樣就能新增更多的元素,可以靈活地處理不確定數量的資料。

LeetCode Problem


2D Array

一般的陣列我們稱為一維陣列,二維陣列則是在陣列中再儲存陣列,這樣資料儲存的格式就不再是線型而是矩陣。

// one-dimensional array
int one = new int[1, 2, 3, 4, 5];

// two-dimensional array
int two = new int [
	[1, 2, 3],
	[4, 5, 6],
	[7, 8, 9]
];

LeetCode Problem


String

雖然字串看起來跟陣列並沒有什麼關係,但實際上字串是char的陣列,因此字串也可以使用大部分陣列的操作,不過還是有些許的不同。

字串比較

當單純的比較陣列時,可以使用==判斷兩個陣列是否相同,但進行字串比較時,能不能使用==進行判斷要看使用的程式語言是否支援operator overloading

  • 像是C++ 支援operator overloading,就可以使用==比較兩個字串。
  • 像是Java 不支援operator overloading,就不能使用==進行比較。因為這只是比較兩個字串是不自同一個物件。

不可變字串/可變字串

若是C++這類的程式語言,使用的字串是可變動的,可以像操作陣列一樣修改字串內容。

但像是Java 這類程式語言,它的字串就是不可變的,若想要新增或修改字串內容,則需要重新建立一個新的字串。

因此,若字串是不可變的,對於字串的修改要格外的小心,如果在Java 中希望字串是可變的,可以使用char[]若需要經常連接字串,則可以使用StringBuilder

LeetCode Problem


小結

這邊再重新介紹了陣列的特性,另外介紹了動態陣列、二維陣列以及字串,這些都是很基礎的資料結構,學習這些相關的演算法,對於提升程式的執行效率會有很大的幫助。

/images/emoticon/emoticon01.gif


上一篇
Day22 - Linked List - Conclusion Problem 4
下一篇
Day 24 - Array and String - Array Problem
系列文
非資工本科的Leetcode刷題筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言