2つのソートアルゴリズムを分割leetcode 29

LEETCODEノート
29:数で分割された2つの
二つの整数与えられ、配当被除数と除数除数。乗算、除算、およびMOD演算子を使用せずに2つの要件を分割します。

除数配当商除数GETで割った配当金は返します。
説明:

被除数和除数均为 32 位有符号整数。
除数不为 0。
假设我们的环境只能存储 32 位有符号整数,其数值范围是int [min,  max]。
本题中,如果除法结果溢出,则返回 int最大值

解決策1:最も可能性が高いと考えるためには、減算を行うことです。
簡単引き算の問題が発生しました:
1。除数と被除数象徴問題は、4例があるでしょう(++、±、 - +、 - ) あまりにも面倒です。ソリューション除数と配当金は、負または正の数に変換されます。
問題は、正の変換を生じる:配当= int型の最小値は、正数に変換されるがオーバーフローします。したがって、被除数と除数の判定が否定的に変換されます。
2.結果がオーバーフローします。唯一の配当=はInteger.MIN_VALUE &&除数= -1この場合があります。そのため別々に処理。
コードは以下の通りであります:

class Solution {
    public int divide(int dividend, int divisor) {
    if(dividend==Integer.MIN_VALUE && divisor==-1)   return Integer.MAX_VALUE;
    int x = dividend ;
    int y = divisor ;
    if(x > 0) x = -x;
    if(y > 0 ) y = -y;
    if(x > y) return 0;
    int flag = 0;
    if(dividend>0&&divisor<0 || dividend<0&&divisor>0) flag = 1;
    int count = 0;
    while(x <= y) 
    {
        x = x - y;
        count++;
    }
    if(flag==0) return count;
    else return -count;
    }
}

このアプローチの最大の問題は、時間制限を超えて、遅すぎることは明らかです。第二の溶液が必要です。
溶液II:遅いAマイナスので、そのように、より多くの失望。
例:
15 2 0
13 4 0 + 1 = 1である
。9. 8 0 + 1 + 2 = 3
1 16 2 + 1 + 0 + 4 = 7つの
1つの2計算結果
コードは次の通りであります

class Solution {
    public int divide(int dividend, int divisor) {
    if(dividend==Integer.MIN_VALUE && divisor==-1)   return Integer.MAX_VALUE;
    int x = dividend ;
    int y = divisor ;
    if(x > 0) x = -x;
    if(y > 0 ) y = -y;
    int disy = y;
    if(x > y) return 0;
    int flag = 0;
    if(dividend>0&&divisor<0 || dividend<0&&divisor>0) flag = 1;
    int count = 0;
    int multiple = 1;
    while(x <= disy) 
    {
        if(x-y<=0)
        {
            x = x - y;
            y += y;//翻倍减少
            count += multiple;
            multiple += multiple;//翻倍增加
        }
        else//y重新归到初始值
        {
            y = disy;
            multiple = 1;
        }
    }
    if(flag==0) return count;
    else return -count;
    }
}

コードに示されているように、一人一人、Y倍増、倍加倍数で増加しました。yが減少*これは、2のn乗の速度に相当します。現在Yが少ない初期値除数のX、Y値の背面よりなるまでの残り。再循環。

发布了5 篇原创文章 · 获赞 1 · 访问量 78

おすすめ

転載: blog.csdn.net/qq_39502383/article/details/104061888