#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Posts
    1
    Rep Power
    0

    How to do write this method with more efficiency ?


    The program below accept two array with hole pozitive nums, with same size N, and fill empty array "c" with nums of "a" that do not exist in "b" and return the biggest num of "a" that do not exist in "b".
    qustion: how to do write this method with more efficiency ?



    [PHP]
    public int f(int[]a, int[]b, int[] c)
    {
    int N = a.length;
    int j, max = 0, g = 0, t = 0;

    for(int i=0; i < N; i++)
    {
    for(j=0; j<N; j++)
    if(b[j] == a[i]) // if find the num in "b" go to the next num in "a"
    break;

    if(j == N)
    {
    c[t] =a[i] // fill empty array "c" with nums of "a" that do not exist in "b"
    if(g ==0 || c[t] > max)
    {
    max = c[t]; // remmber the max num in "max"
    g = 1;

    }
    t++;

    }


    }
    return max; // max of "a" that you do not have in "b"



    [\PHP]
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2005
    Posts
    74
    Rep Power
    33
    If the are guaranteed to be the same size then

    Store the size of a or b in an int.

    Hold a seperate counter variable that increments one at a time.
    Hold a seperate variable for the current max number.

    Loop through the specified number of times (which == the size of array a).
    If elementA(count) != elementB(count)
    {
    // add to array list c
    // set the new max number to be this number
    }
    // Now we're at the end of the loop.

    // Print out the max number
  4. #3
  5. kill 9, $$;
    Devshed Supreme Being (6500+ posts)

    Join Date
    Sep 2001
    Location
    Shanghai, An tSín
    Posts
    6,897
    Rep Power
    3886
    Originally Posted by doa24uk
    If the are guaranteed to be the same size then

    Store the size of a or b in an int.

    Hold a seperate counter variable that increments one at a time.
    Hold a seperate variable for the current max number.

    Loop through the specified number of times (which == the size of array a).
    If elementA(count) != elementB(count)
    {
    // add to array list c
    // set the new max number to be this number
    }
    // Now we're at the end of the loop.

    // Print out the max number
    That only checks if 'a' and 'b' contain the same elements in the same position in the array, which isn't the original problem.

    Hint to OP: this is much more efficient of 'a' and 'b' are sorted.
  6. #4
  7. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Aug 2005
    Posts
    74
    Rep Power
    33
    Originally Posted by ishnid
    That only checks if 'a' and 'b' contain the same elements in the same position in the array, which isn't the original problem.

    Hint to OP: this is much more efficient of 'a' and 'b' are sorted.
    Doh! Of course, you are correct.

    Collections.sort()

IMN logo majestic logo threadwatch logo seochat tools logo