Java?C++題解leetcode1441用棧操作構建數(shù)組示例
更新時間:2022年10月17日 11:03:46 作者:AnjaVon
這篇文章主要為大家介紹了Java?C++題解leetcode1441用棧操作構建數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
題目要求
思路:模擬【雙指針】
按題意模擬即可:
一個指針cur依次指向target中的每個元素,另一個指針i依次指向1∼n的數(shù)字;
對i所指向的每個數(shù)字進行Push
操作,然后判斷當前數(shù)字與target[cur]是否相等;
- 相等則判斷下一個數(shù)字,同時將cur指向下一個元素;
- 否則需進行
Pop
操作。
過程中需注意cur的越界,當其越界則target構造完畢。
Java
class Solution { public List<String> buildArray(int[] target, int n) { List<String> res = new ArrayList<>(); for (int i = 1, cur = 0; i <= n && cur < target.length; i++) { res.add("Push"); if (target[cur] != i) res.add("Pop"); else cur++; } return res; } }
- 時間復雜度:O(n)
- 空間復雜度:O(1)
C++
class Solution { public: vector<string> buildArray(vector<int>& target, int n) { vector<string> res; for (int i = 1, cur = 0; i <= n && cur < target.size(); i++) { res.emplace_back("Push"); if (target[cur] != i) res.emplace_back("Pop"); else cur++; } return res; } };
- 時間復雜度:O(n)
- 空間復雜度:O(1)
Rust
impl Solution { pub fn build_array(target: Vec<i32>, n: i32) -> Vec<String> { let mut res = Vec::new(); let mut cur = 0; for i in 1..(n + 1) { if (cur < target.len()) { res.push(String::from("Push")); if (target[cur] != i) { res.push(String::from("Pop")); } else { cur += 1; } } } res } }
- 時間復雜度:O(n)
- 空間復雜度:O(1)
以上就是Java C++題解leetcode1441用棧操作構建數(shù)組示例的詳細內容,更多關于Java C++ 棧操作構建數(shù)組的資料請關注腳本之家其它相關文章!
相關文章
淺談Java中Map和Set之間的關系(及Map.Entry)
這篇文章主要介紹了淺談Java中Map和Set之間的關系(及Map.Entry),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09詳解Java接口簽名(Signature)實現(xiàn)方案
這篇文章主要介紹了Java接口簽名(Signature)實現(xiàn)方案?,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01