重點是用陣列初始化vector陣列啊
在leetcode裡做到將兩個有序數組合併成一個,在原地第一個陣列下進行(假設第一個陣列的儲存單元夠用)本來是一個很簡單的問題。自己在隨便初始化vector<int>變數時候不知道 vector<int> a(m, m + 9);裡面9所選的大小應該為陣列的大小,選成了8.導致一直有問題。。啊啊啊,細節決定成敗啊。還有一點就是方法中要注意while (j >= 0 && i >= 0)中i>=0的判斷。否則的話第一個陣列選擇完後一直沒有第二個陣列剩下要比較的元素大,則第一個陣列下標一直自減,最後會是很大的負數,導致陣列越界。
#include <vector>
using namespace std;
//class Solution
//{
//public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
{
int k = m + n - 1, i = m - 1, j = n - 1;
while (j >= 0 && i >= 0)
{
if (nums1[i] >= nums2[j])
{
nums1[k--] = nums1[i--];
}
else
nums1[k--] = nums2[j--];
}
if (j >= 0)
{
while (j >= 0)
nums1[k--] = nums2[j--];
}
// int i;
for (i = 0; i < m + n; i++)
{
cout<<nums1[i]<<"\t";
}
}
//}//;
int main()
{
int m[9] = {0,0,3,0,0,0,0,0,0};
int n[6] = {-1,1,1,1,2,3};
vector<int> a(m, m + 9);
vector<int> b(n, n + 6);
merge(a, 3, b, 6);
return 0;
}
相關推薦
重點是用陣列初始化vector陣列啊
在leetcode裡做到將兩個有序數組合併成一個,在原地第一個陣列下進行(假設第一個陣列的儲存單元夠用)本來是一個很簡單的問題。自己在隨便初始化vector<int>變數時候不知道 vector<int> a(m, m + 9);裡面9所選的大小應
使用C風格陣列初始化vector陣列
#include <iostream> #include <vector> using namespace std; /* 總結:使用陣列初始化vector陣列:必須指出陣列第n個元素以及陣列n+x元素的下一位置的地址 如果超過原陣列的下一個元素的
用vector物件代替陣列——使用陣列初始化vector物件,vector的拷貝方式說明。
在看到c++primer的第三章,3.5.2節練習時,碰到了一個問題如下: 將剛剛建立的陣列拷貝給另一個數組。利用vector 重新寫此程式完成類似的功能。 然後我就在網上尋找答案,同時也學習了很多拷貝的方法 一、初始化構造時拷貝 vector<int>
使用陣列初始化vector物件
允許使用陣列來初始化vector物件。要實現這一目的,只需指明要拷貝區域的首元素地址和尾後地址即可。int arr={0,1,2,3,4,5,6};vector<int> vec(begin(arr),end(arr));
vector二維陣列初始化
int main() { vector<vector<int> >num = { {1,1,1,0,1,1},{1,0,1,1,1,1},{1,1,1,0,0,1},{1,0,1,0,0,1},{1,1,1,1,1,1} }; //二維陣列
知識網路1.1 用隨機數初始化陣列
到目前為止,我們所學的知識已經夠我們幹很多事了。在繼續往腦子裡塞新知識前,有必要總結一下現有知識都能幹哪些事。把基礎鞏固好再向下一個目標進發。 本節和接下來幾節會以例項的方式來綜合運用前面所學的知識,以此達到靈活運用的目的。(也可以理解為實驗課的意思)要注意,我
JAVA中陣列初始化時用new與不用new有區別嗎
不同於String類,String由於實現了常量池 所以new 和不new 有區別:new的話,引用變數指向堆區。不new的話,引用變數指向常量池。對於陣列的定義,初始化時用new與不用new 沒區別,
關於vector二維動態陣列初始化
很多時候,我們要使用動態陣列來儲存一開始未知數量的資料時,往往都是在程式中得到行數和列數,然後再對陣列進行初始化。可是,如果我們只知道行或者列其中的一個數量,可以進行動態陣列初始化嗎? 答案是可以的。如果我們知道行數,那麼初始化可以如此寫:vec
c++ 用new動態申請陣列初始化的問題
注意括號的使用 注意:C++使用new和delete在堆(自由儲存區)上分配和釋放動態陣列。 動態陣列初始化: 1.元素只能初始化為元素型別的預設值,而不能像陣列變數一樣,用初始化列表為陣列元素提供各不相同的初值。 2.對於內建資料型別元素的陣列,必
C++ 之 Vector(容器)初始化高維陣列
使用C++標準模版庫(STL)中的Vector(向量)可以實現變長陣列,實現二維陣列,高維陣列。下面給出程式碼實現。 #include<iostream> #include<vector> using namespace std; int main() {int len;cin>
物件陣列初始化問題
物件陣列不會自動初始化,所以要對每個元素初始化。 如: JField []txt=new JField[4]; ------這裡只是new了一個物件陣列,並沒有初始化陣列元素 txt[0]=new JField();-------------因為物件陣列不會自動初始化,所以要對每個元素初
C++ 類物件陣列初始化
如何給類中定義了帶有引數的建構函式的物件陣列賦值 class A { public: A(){}//無參建構函式0 A(int i){}//有參建構函式1 A(int i,int j){}//有參建構函式2 }; int main() { A a,b[5];
Go語言 陣列初始化和基本操作
package main import "fmt" func main() { // 陣列同一型別的集合 var arr [50]int // 1 賦值 // 運算元組,下標從0開始,索引從0到len()-1 for i := 0; i < len(arr); i++ { a
乘法表函式+交換兩個數函式+判斷閏年函式+陣列初始化、清空和逆置函式+判斷素數函式
寫一個函式,列印所輸入數字的乘法表: #include <stdio.h> /* 寫一個函式,實現所輸入數字的乘法表 */ void table(int n) { for (int i = 1; i <= n; i++) { for (int j = 1; j
Typescript | 關於二維陣列初始化的誤區
假如要初始化一個4x4的二維陣列,裡面16個元素都為0 錯誤示範: let arr = new Array<Array<any>>() let cols = [0, 0, 0, 0] for (let raw = 0; raw < 4; raw++){ ar
1032 挖掘機技術哪家強 (結構體陣列初始化)
為了用事實說明挖掘機技術到底哪家強,PAT 組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。 輸入格式: 輸入在第 1 行給出不超過 105 的正整數 N,即參賽人數。隨後 N 行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號(從
類陣列初始化的問題,以及複製建構函式const問題
今天再編寫C++的作業時,又遇到一個問題,MyString SArray[4] = {“big”,“me”,“about”,“take”};這個的初始化始終出錯。起初我的理解是該語句的初始化是:SArray[0](“big”),也就是用一個字元陣列來初始化一個c
C/C++陣列初始化的總結
目錄 陣列定義不初始化會被隨機賦值 陣列初始化的幾種形式 陣列初始化為某一固定值 memset(陣列名,值,sizeof(陣列名)) fill(begin(),end(),value) 以前剛開始學陣列初始化,一直都沒搞太清楚,包括參加PAT考試,直到看了胡凡的《演算
C語言陣列初始化
/*C++使用new關鍵字分配記憶體,而C使用malloc(memory allocate)來分配記憶體*/ #include <stdio.h> #include <malloc.h> /*使用typedef把int型別命名為新型別xx*/ typedef
Java中一維陣列和二維陣列初始化
陣列屬於引用資料型別,在使用前必須初始化,否則會報NullPointerException(空指標異常:執行時異常) 一維陣列初始化: 動態初始化:(宣告並開闢陣列) 資料型別[ ] 陣列名稱=new 資料型別[長度] int[ ] data=new