matchUp challenge

Hi,

I am working on below challenge
http://codingbat.com/prob/p136254

Psedo code description of approach :
1. loop through both arrays
2. identify each index element and compare to see differnce is atmost 2
3. if step2 is true return true
4. otherwise return false

I wrote my code as below

public int matchUp(int[] nums1, int[] nums2) {
  int count=0;
  for(int i=0; i<nums1.length-1;i++){
    if(Math.abs(nums1[i]-nums2[i+1])<=2){
      count++;
    }
  }
  return count;
}

Open in new window




I am not passing all tests due to edge cases.
Expected      Run            
matchUp([1, 2, 3], [2, 3, 10]) → 2      1      X      
matchUp([1, 2, 3], [2, 3, 5]) → 3      1      X      
matchUp([1, 2, 3], [2, 3, 3]) → 2      2      OK      
matchUp([5, 3], [5, 5]) → 1      1      OK      
matchUp([5, 3], [4, 4]) → 2      1      X      
matchUp([5, 3], [3, 3]) → 1      1      OK      
matchUp([5, 3], [2, 2]) → 1      0      X      
matchUp([5, 3], [1, 1]) → 1      0      X      
matchUp([5, 3], [0, 0]) → 0      0      OK      
matchUp([4], [4]) → 0      0      OK      
matchUp([4], [5]) → 1      0      X      
other tests
X      

How to improve my design, approach, code? please advise
LVL 7
gudii9Asked:
Who is Participating?
 
krakatoaConnect With a Mentor Commented:
WHY are you comparing nums1 indexes with nums2 indexes+1 ????????

You haven't read the question properly again.
0
 
gudii9Author Commented:
public int matchUp(int[] nums1, int[] nums2) {
  int count=0;
  for(int i=0; i<nums1.length-1;i++){
    if(Math.abs(nums1[i]-nums2[i])<=2){
      count++;
    }
  }
  return count;
}

Open in new window

oops that was type. I fixed as above. still failing some tests. please advise
Expected      Run            
matchUp([1, 2, 3], [2, 3, 10]) → 2      2      OK      
matchUp([1, 2, 3], [2, 3, 5]) → 3      2      X      
matchUp([1, 2, 3], [2, 3, 3]) → 2      2      OK      
matchUp([5, 3], [5, 5]) → 1      1      OK      
matchUp([5, 3], [4, 4]) → 2      1      X      
matchUp([5, 3], [3, 3]) → 1      1      OK      
matchUp([5, 3], [2, 2]) → 1      0      X      
matchUp([5, 3], [1, 1]) → 1      0      X      
matchUp([5, 3], [0, 0]) → 0      0      OK      
matchUp([4], [4]) → 0      0      OK      
matchUp([4], [5]) → 1      0      X      
other tests
X      
0
 
krakatoaCommented:
please advise

My advice is that you read the question properly . . .  which you still haven't done.

You are being lazy again, and expecting us to tell you what to think, despite the fact that we've already told you HOW to think.
0
Introducing Cloud Class® training courses

Tech changes fast. You can learn faster. That’s why we’re bringing professional training courses to Experts Exchange. With a subscription, you can access all the Cloud Class® courses to expand your education, prep for certifications, and get top-notch instructions.

 
gudii9Author Commented:
public int matchUp(int[] nums1, int[] nums2) {
  int count=0;
  for(int i=0; i<nums1.length;i++){
    if((Math.abs(nums1[i]-nums2[i])==2)||(Math.abs(nums1[i]-nums2[i])==1)){
      count++;
    }
  }
  return count;
}

Open in new window

Expected      Run            
matchUp([1, 2, 3], [2, 3, 10]) → 2      2      OK      
matchUp([1, 2, 3], [2, 3, 5]) → 3      3      OK      
matchUp([1, 2, 3], [2, 3, 3]) → 2      2      OK      
matchUp([5, 3], [5, 5]) → 1      1      OK      
matchUp([5, 3], [4, 4]) → 2      2      OK      
matchUp([5, 3], [3, 3]) → 1      1      OK      
matchUp([5, 3], [2, 2]) → 1      1      OK      
matchUp([5, 3], [1, 1]) → 1      1      OK      
matchUp([5, 3], [0, 0]) → 0      0      OK      
matchUp([4], [4]) → 0      0      OK      
matchUp([4], [5]) → 1      1      OK      
other tests
OK      

i made mistake. Did not notice two or less but not equal. I fixed as above now passes all tests. Any suggestion to improve above code?
0
 
krakatoaCommented:
No. You've done it this time.

I'd suggest however that you take the biggest part of the lesson here from the (eventually correct) interpretation of the question. That's always going to be the challenge.
0
 
gudii9Author Commented:
No. You've done it this time.

I'd suggest however that you take the biggest part of the lesson here from the (eventually correct) interpretation of the question.

English is not my first language. some of the sentences i am having hard time to properly interpret. I will definitely do my best in improving.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.