Leetcode-2020.01

2637 ワード

文書ディレクトリ
  • 一度しか現れない数字
  • 多数元素
  • 探索二次元行列II
  • は、2つの秩序配列
  • を結合する.
  • 卵が落ちた
  • このディレクトリのテーマは、2日ごとにC++で1つの問題を解く計画です.ここ数年、ずっとC++を拾っていないので、今年は少し変わったでしょう.
    一度しか現れない数字
    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)