Leetcode-2020.01
2637 ワード
文書ディレクトリ一度しか現れない数字 多数元素 探索二次元行列II は、2つの秩序配列 を結合する.卵が落ちた このディレクトリのテーマは、2日ごとにC++で1つの問題を解く計画です.ここ数年、ずっとC++を拾っていないので、今年は少し変わったでしょう.
一度しか現れない数字
多数要素
vectorの使い方を学ぶ
2 DマトリクスIIの検索
左下から右上へ遍歴する
2つの配列を結合
大きな数から比較
卵が落ちる
難しい:問題を審査して、問題の中で注意して、卵の個数の作用は参考にします:参考博文を参考にします
一度しか現れない数字
class Solution {
public:
int singleNumber(vector& nums) {
set s;
int res;
for(auto i:nums){
if(s.count(i)){
s.erase(i);
}else{
s.insert(i);
}
}
res = *s.begin();
return res;
}
};
多数要素
vectorの使い方を学ぶ
class Solution {
public:
int majorityElement(vector& nums) {
int target = nums[0];
int count = 1;
for(int i=0;i
2 DマトリクスIIの検索
左下から右上へ遍歴する
class Solution {
public:
bool searchMatrix(vector>& matrix, int target) {
if(matrix.size() <= 0||matrix[0].size() <= 0){
return false;
}
int m = matrix.size() ;
int n = matrix[0].size();
int i= m-1;
int j = 0;
while(i>=0 && j<=n-1){
if(matrix[i][j]==target){
return true;
}else if(matrix[i][j]>target){
i--;
}else{
j++;
}
}
return false;
}
};
2つの配列を結合
大きな数から比較
class Solution {
public:
void merge(vector& nums1, int m, vector& nums2, int n) {
int i=m-1;
int j=n-1;
int right = m+n-1;
// : nums1
// : nums2
// : nums1 nums2
// 3 , ,
while(i>=0 && j>=0){
if(nums1[i]>nums2[j]){
nums1[right] = nums1[i];
i--;
}else{
nums1[right] = nums2[j];
j--;
}
right--;
}
// 2 :nums2 , , nums1 。
// 1 , nums2 Merge nums1
while(j>=0){
nums1[right] = nums2[j];
j--;
right--;
}
}
};
卵が落ちる
難しい:問題を審査して、問題の中で注意して、卵の個数の作用は参考にします:参考博文を参考にします
class Solution {
public:
int superEggDrop(int K, int N) {
int remainTestCount = 1;
while(getConfirmFloors(remainTestCount,K)