Java > Array-2 > notAlone (CodingBat Solution)

Problem:

We'll say that an element in an array is "alone" if there are values before and after it, and those values are different from it. Return a version of the given array where every instance of the given value which is alone is replaced by whichever value to its left or right is larger.

notAlone({1, 2, 3}, 2) → {1, 3, 3}
notAlone({1, 2, 3, 2, 5, 2}, 2) → {1, 3, 3, 5, 5, 2}
notAlone({3, 4}, 3) → {3, 4}


Solution:

public int[] notAlone(int[] nums, int val) {
  for (int i= 1;i<nums.length -1;i++)
  {
  if (nums[i] == val)
  if (nums[i-1] != nums[i] && nums[i+1] != nums[i])
   if (nums[i+1] > nums[i-1]) nums[i] = nums[i+1]; 
   else if (nums[i+1] < nums[i-1]) nums[i] = nums[i-1];
   }
   return nums;
  

12 comments:

  1. how to create a class object and how to call its method in main?

    ReplyDelete
    Replies
    1. public class Y {
      public int[] notAlone(int[] nums, int val) {
      for(int i=0;i0 && nums[i]==val && inums[i]){
      nums[i]=nums[i-1];
      }
      if(nums[i+1]>nums[i]){
      nums[i]=nums[i+1];
      }
      else{
      nums[i]=nums[i];
      }
      }
      }
      return nums;
      }

      public static void main(String[] args) {
      Y yy=new Y();
      int [] nums={1, 1, 1, 2};
      yy.notAlone(nums,2);
      }
      }

      Delete
  2. 01
    public int[] notAlone(int[] nums, int val) {
    02
    for (int i= 1;i nums[i-1]) nums[i] = nums[i+1];
    07
    else if (nums[i+1] < nums[i-1]) nums[i] = nums[i-1];
    08
    }
    09
    return nums;
    10

    for this above code.

    how to create a class object and how to call its method in main?

    ReplyDelete
  3. int len= nums.length;
    if(len<3) return nums;
    for(int i=1; i<len-1;i++) {
    if(nums[i]==val && nums[i-1]!=nums[i] && nums[i+1]!=nums[i] ){
    int bigger=Math.max(nums[i-1],nums[i+1]);
    nums[i]=bigger;
    }

    }return nums;

    ReplyDelete
  4. public int[] notAlone(int[] nums, int val) {
    int max = 0;
    for(int i = 1; i < nums.length-1; i++){
    if(nums[i] == val){
    if(nums[i-1] > nums[i+1]){
    max = nums[i-1];
    } else {
    max = nums[i+1];
    }
    nums[i] = max;
    i++;
    }
    }
    return nums;
    }

    ReplyDelete
  5. public int[] notAlone(int[] nums, int val) {
    for (int i = 0; i < nums.length - 1; i++)
    {
    if (nums[i] == val)
    {
    if ((i - 1 >= 0 && nums[i - 1] != nums[i]) && nums[i + 1] != nums[i])
    {
    if (nums[i - 1] > nums[i + 1])
    {
    nums[i] = nums[i - 1];
    }
    else
    {
    nums[i] = nums[i + 1];
    }
    }
    }
    }
    return nums;
    }

    ReplyDelete
  6. public int[] notAlone(int[] nums, int val) {
    for (int i = 1; i < nums.length - 1; i++) {
    if (nums[i] == val) {
    nums[i] = Math.max(nums[i-1], nums[i+1]);
    i++;
    }
    }
    return nums;
    }

    ReplyDelete
    Replies
    1. close, but will fail if (nums[i-1] == val || nums[i+1] == val)

      public int[] notAlone(int[] nums, int val) {
      for (int i = 1; i < nums.length - 1; ++i) {
      if (nums[i] == val && nums[i-1] != val && nums[i+1] != val) {
      nums[i] = Math.max(nums[i-1], nums[i+1]);
      }
      }
      return nums;
      }

      Delete
  7. public int[] notAlone(int[] nums, int val) {
    for(int i=1;inums[i-1])?nums[i+1]:nums[i-1];



    }
    return nums;
    }

    ReplyDelete
  8. for(int i= 1; i<nums.length-1; i++) {
    if(nums[i] == val) {
    if(nums[i-1] != nums[i+1] && nums[i] != nums[i+1] && nums[i] != nums[i-1]) {
    nums[i] = Math.max(nums[i-1], nums[i+1]);
    }
    }
    }
    return nums;

    ReplyDelete
  9. public int[] notAlone(int[] nums, int val) {
    for(int i=1;i <nums.length-1;i++) {
    if(nums[i]==val && nums[i-1]!=val && nums[i+1]!=val ) {
    nums[i]=Math.max(nums[i-1],nums[i+1]);
    }
    }

    return nums;
    }

    ReplyDelete
  10. public int[] notAlone(int[] nums, int val) {

    int max=0;

    for(int i=1 ; i<nums.length-1 ; i++){
    if(nums[i]==val && (nums[i-1]!=val && nums[i+1]!=val)){

    max=Math.max(nums[i-1],nums[i+1]);

    nums[i] = max;
    }
    }
    return nums;
    }

    ReplyDelete