Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n = this.length();
- int lowR = 0;
- int highR = n-1;
- while(lowR <= highR) {
- int midR = (lowR+highR)/2;
- int rrMin = 0;
- if(midR != 0) {
- rrMin = this.inspect(midR-1, n-1);
- if(target == rrMin) {
- return new int[] {midR-1,n-1};
- }
- }
- int rrMax = this.inspect(midR, n-1);
- if(target == rrMax) {
- return new int[] {midR,n-1};
- }
- if(target < rrMin) {
- highR = midR-1;
- //System.out.println("Less Row");
- }
- else if(target > rrMax) {
- lowR = midR+1;
- //System.out.println("More Row");
- }
- else{
- //System.out.println("Row Found: "+midR);
- int lowC = 0;
- int highC = n-1;
- while(lowC <= highC) {
- int midC = (lowC+highC)/2;
- int rc = this.inspect(midR, midC)-target;
- if(rc < 0) {
- lowC = midC+1;
- }
- else if(rc > 0) {
- highC = midC-1;
- }
- else{
- //System.out.println("["+target+"] Value Found at: {"+midR+","+midC+"}");
- return new int[] {midR,midC};
- }
- }
- return null;
- }
- }
- return null; // not found
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement