一般的に、究極の答えは最高の2を返すことである2個の解を持つリングの問題を指します。一般的なのは、次のとおりです。
- アングルクロック
- バスステーションとの間の距離
一般的な問題解決のアイデアはない間違ったこれらの点から、類似しています。
- まず、和の合計の長さを見つけます。
- 次いで、溶液を視覚的にサブ決定した後。
- 最後に、比較することで、選択した回答のメリットを。
sum - sub
sub
...
int sum = ?
int sub = ?
return chioce(sub-sub, sub);
...
時計角C_01
方法:補完の方法
複雑性分析
- 時間計算: 、
- 宇宙の複雑さ: 、
バスステーションとの間の距離C_02
でnは0からnまでのシーケンスにおけるリングバス路線上のステーション、 - 1は番号が付けられています。我々は、局の数およびIは、(i + 1)%N局間の距離である数を表す[I]に隣接するバス停の各対の間の距離を知って、距離。
リング上のバスは、時計回りと反時計回りの方向に移動することができます。
乗客は、宛先、宛先の間の最短距離から開始する出発点に戻ります。
输入:distance = [1,2,3,4], start = 0, destination = 3
输出:4
解释:公交站 0 和 3 之间的距离是 6 或 4,最小值是 4。
方法:補完の方法
そして、アングルクロックが質問のクラスに自然を求めています。私たちは少し「日和見主義」を見なければなりませんので、それは、最短パスの内側の円形領域であるため、
- 我々は、第1の和の合計長さを見つけ、DISに距離D Sを求めます。
- 最後に、和DIS比較DISサイズをすることができます。
public int distanceBetweenBusStops(int[] distance, int start, int destination) {
int s = Math.min(start, destination);
int d = Math.max(start, destination);
int sum = 0;
for (int dis : distance)
sum += dis;
int dis = 0;
for (int i = s; i < d; i++)
dis += distance[i];
return Math.min(sum-dis, dis);
}
複雑性分析
- 時間計算: 、
- 宇宙の複雑さ: 、
A_04
この方法の一つ:
複雑性分析
- 時間計算: 、
- 宇宙の複雑さ: 、