Sunday, July 13, 2008

Problem Statement for TallPeople


Problem URL:

http://www.topcoder.com/stat?c=problem_statement&pm=2923&rd=5854

Problem Statement


A group of people stand before you arranged in rows and columns. Looking from above, they form an R by C rectangle of people. You will be given a String[] people containing the height of each person. Elements of people correspond to rows in the rectangle. Each element contains a space-delimited list of integers representing the heights of the people in that row. Your job is to return 2 specific heights in a int[]. The first is computed by finding the shortest person in each row, and then finding the tallest person among them (the "tallest-of-the-shortest"). The second is computed by finding the tallest person in each column, and then finding the shortest person among them (the "shortest-of-the-tallest").

Definition


Class:TallPeople
Method:getPeople
Parameters:String[]
Returns:int[]
Method signature:int[] getPeople(String[] people)
(be sure your method is public)



Constraints

-people will contain between 2 and 50 elements inclusive.
-Each element of people will contain between 3 and 50 characters inclusive.
-Each element of people will be a single space-delimited list of positive integers such that:

1) Each positive integer is between 1 and 1000 inclusive with no extra leading zeros.

2) Each element contains the same number of integers.

3) Each element contains at least 2 positive integers.

4) Each element does not contain leading or trailing whitespace.

Examples

0)

{"9 2 3",
"4 8 7"}
Returns: { 4,  7 }
The heights 2 and 4 are the shortest from the rows, so 4 is the taller of the two. The heights 9, 8, and 7 are the tallest from the columns, so 7 is the shortest of the 3.
1)

{"1 2",
"4 5",
"3 6"}
Returns: { 4,  4 }

2)

{"1 1",
"1 1"}
Returns: { 1,  1 }

My Solution:


public class TallPeople{
public int[] getPeople(String[] people){
int[][] a = new int[people.length][people[0].split(" ").length];
int row=people.length,col=people[0].split(" ").length;
for (int i=0;i< spl =" people[i].split(" j="0;" tallofshort="-1,shortOfTall="Integer.MAX_VALUE;" i="0;i<" s="a[i][0];" j="0;j<" s=" s<" tallofshort="s;" i="0;i<" s="a[0][i];" j="0;j<" s=" s"> a[j][i]?s:a[j][i];
}
if (shortOfTall > s) shortOfTall=s;
}
System.out.println(tallOfShort+" "+shortOfTall);
return new int[]{tallOfShort,shortOfTall};
}

public static void main(String[] args){
TallPeople tp = new TallPeople();
tp.getPeople(new String[]{"9 2 3","4 8 7"});
tp.getPeople(new String[]{"1 2","4 5","3 6"});
tp.getPeople(new String[]{"1 1","1 1"});
}
}

No comments: