在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。雙指標
class solution
int n = array[0].size();
int l = 0;
int r = n - 1;
while(l < m && r >= 0) else if(target > array[l][r]) else
}return false;
}};
1、遍歷字串陣列得到空格數
2、根據空格數得到轉換後新字串的總長度
3、由後往前進行空格轉換
class solution
int cnt = 0; // 用於記錄空格數量
for(int i = 0; i < length; ++i)
}// 當空格數為0時,直接返回
if(cnt == 0)
int newlength = length + cnt * 2;
for(int i = length - 1; i >= 0; i--) else
}}};
輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。方法一:遍歷鍊錶,並將遍歷結果依次插入到vector的第乙個位置
方法二:翻轉鍊錶,並遍歷翻轉後的鍊錶
/**
* struct listnode
* };
*/class solution
return arr;
*/// 方法二
listnode *node;
listnode *newnode = nullptr;
while(head)
vectorarr;
while(newnode)
return arr;
}};
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。遞迴
/**
* definition for binary tree
* struct treenode
* };
*/class solution
int root_idx = pre_left;
int in_idx = m[pre[root_idx]];
treenode* root = new treenode(pre[root_idx]);
int length = in_idx - vin_left;
root->left = reconstruct(pre, pre_left + 1, pre_left + length, vin, vin_left, in_idx - 1);
root->right = reconstruct(pre, pre_left + 1 + length, pre_right, vin, in_idx + 1, vin_right);
return root;
}treenode* reconstructbinarytree(vectorpre,vectorvin)
for(int i = 0; i < n; ++i)
treenode* root = reconstruct(pre, 0, n - 1, vin, 0, n - 1);
return root;
}private:
mapm;
};
劍指offer C 刷題總結(2)
目錄 用兩個棧實現佇列 題目 題解 完整 旋轉陣列最小的數字 題目 題解 完整 斐波那契數列 題目 題解 完整 跳台階題目 題解 完整 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。當發生push和pop操作時,對兩個棧實現一次資料置換操作,實現佇列的先進先出。c...
劍指offer C 刷題總結(4)
目錄 調整陣列順序使奇數字於偶數前面 題目 題解 完整 鍊錶中倒數第k個節點 題目 題解 完整 反轉鍊錶 題目 題解 完整 合併兩個排序的鍊錶 題目 題解 完整 樹的子結構 題目 題解 完整 二叉樹的映象 題目 輸入描述 題解 完整 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的...
劍指刷題5
題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 push操作的話其實佇列和棧的邏輯是一樣的,入口就是第乙個stack,主要是pop的話要實現佇列的先進先出的邏輯,所以要將stack中已有的node依次pop然後馬上push到stack2中。class...