1

みんな私はこの試験を持っていますが、switch ステートメントだけの配列を使用するかどうかわからなかったので、苦労しています。私はまだJavaに慣れていないので、助けてください。これが質問です。

Write a function:
class IntList {
  public int value;
  public IntList next;
}

class Solution {
  public int solution(IntList L, int M);
}

つまり、整数と正の整数Lからなる単一連結リストが与えられた場合N

Lこれは、 N 個の整数と正の整数 からなる単結合リストを指定すると、リスト内の最後の要素が index であると仮定して、リストM内の要素に格納されている値を最後から数えて返します。そのような値を返すことができない場合、関数は返す必要があります。たとえば、次のように仮定します。M-th1−1L

  L = 1 -> 2 -> 3 -> 4

リストの最後から数えて 2 番目の要素には値があるため、関数M = 2は を返す必要があります。33

4

4 に答える 4

2

私が間違っていなければ、リンクされたリストの最後の要素に Kth を返すプログラムを作成する必要があります。- 単方向リストの場合は、ヘッド ポインターが必要です。IntList ヘッドと呼ばれるヘッド ポインタがあるとします。以下は、最後の要素までの K 番目を検索するコードです。

public int solution(IntList head, int k) {
  IntList temp = head;
  int count = 0;
  while(count!=k) {
    if(temp==null) {
      return -1;
    }
    temp = temp.next;
  }

  while(temp!=null) {
    head = head.next;
    temp = temp.next;
  }
  return head.value;
}

徹底的なエラーチェックは行いませんでしたが、これでうまくいくはずです。

于 2013-06-22T06:46:32.733 に答える
0
Here is the whole program!! 

public class Program
{
    public static void Main(string[] args)
    {
        IntList iList = new IntList(2, null);
        iList.add(789); 
        iList.add(45); 
        iList.add(19); 
        iList.add(8); 
        iList.add(154564);
        iList.add(32); 
        iList.add(88);
        iList.add(109);
        Solution sol = new Solution();
        Console.WriteLine(sol.solution(iList,8));
        Console.ReadLine();
    }
}
    class Solution
    {
        public int solution(IntList L, int M)
        {
            IntList temp = L;
            int value=0;
            int i = 0;
            for (i = 0; i <= L.length() - 1; i++)
            {
                temp = temp.next();
                if (temp == null) break;
                value = temp.value();
                if (value == M)
                {
                    if (i == 0) return L.length() - 1;
                    else return L.length()-1-i;

                }
            }
            return -1;
        }
    }
class IntList
{
    private int val;
    private IntList nex;

    public IntList(int v, IntList n)
    {          
        val = v;
        nex = n;
    }
    public int length()
    {
        if (nex == null)
            return 1;
        else
            return 1 + nex.length();
    }
    public int value() { return val; }       
    public IntList next() { return nex; }
    public void setNext(IntList n) { nex = n; }
    public IntList findLast()
    {
        if (next() == null) return this;
        else return next().findLast();
    }
    public void add(int v)
    {
        findLast().setNext(new IntList(v, null));
    }
}
于 2015-01-13T05:53:06.117 に答える
0

高レベルの概念:

  1. リストをトラバースして長さ N を見つけます。

  2. N < M の場合は -1 を返します。それ以外の場合は、手順 3 に進みます。

  3. リストをトラバースして、インデックス N - M の要素を見つけます。ここで、インデックスは、0 から N - 1 までの通常のカウント方式を指します。

于 2013-06-22T06:32:04.210 に答える