0

このメソッドのポイントは、タイプ ArrayList の要素を反転することです<Integer>。したがって、要素がある場合:

5
6
7
8
9
10

メソッドを呼び出すと、要素の位置は次のように反転する必要があります。

10
9
8
7
6
5

これが方法です。アドバイスをいただければ幸いです:)。

public void invertElements()
{
    for (int i = list.size()-1; i <= -1; i--)
    {
        int temp = list.get(i);
        for(int j = 0; j < list.size()-1; j++)
        {
        list.set(j, temp);
        }
        
    }
}

list は私の名前ですArrayList<Integer>

更新:この方法を試してみました:

public void invertElements()
{
    int index = 0;
    for (int i = list.size()-1; i > -1; i--)
    {
        int temp = list.get(i);
        list.set(index, temp);
        index++;
        if(index == list.size()-1)
        {
            break;
        }           
    }
}

出力は次のとおりです: 10, 9, 8, 9, 10 誰かが理由を説明してくれませんか?

4

2 に答える 2

0

解決策は

public void invertElems(List<Integer> list) {
  for (int i = 0; i < list.size() / 2; ++i) { // we only need iterating half of the size of list
    int elem = list.get(i); // we store element in additional variable
    list.set(i, list.get(list.size() - i - 1)); // we set i-th elementh with i-th element from the back
    list.set(list.size() - i - 1, elem);
  }
}

線形時間。お気軽にご質問ください。

于 2014-03-25T12:56:04.017 に答える