[問題]リングリング問題解決のテンプレート

一般的に、究極の答えは最高の2を返すことである2個の解を持つリングの問題を指します。一般的なのは、次のとおりです。

  • アングルクロック
  • バスステーションとの間の距離

一般的な問題解決のアイデアはない間違ったこれらの点から、類似しています。

  • まず、和の合計の長さを見つけます。
  • 次いで、溶液を視覚的にサブ決定した後。
  • 最後に、比較することで、選択した回答のメリットを。sum - subsub
...
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
解释:公交站 03 之间的距离是 64,最小值是 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);
}

複雑性分析

  • 時間計算: ザ・ n個 O(N)
  • 宇宙の複雑さ: ザ・ 1 O(1)

A_04

この方法の一つ:


複雑性分析

  • 時間計算: ザ・ ()
  • 宇宙の複雑さ: ザ・ ()

公開された495元の記事 ウォンの賞賛105 ・は 30000 +を見て

おすすめ

転載: blog.csdn.net/qq_43539599/article/details/104906533