Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

zeroFront challenge

Posted on 2016-08-14
7
Medium Priority
?
178 Views
Last Modified: 2016-08-17
Hi,

I am working on below challenge

http://codingbat.com/prob/p193753

My psuedo code of the logic is
1. Loop through given array
2. check if the given element is zero.
3. if true bring to front.
4. else keep as it is.
5. return the modified array


I wrote my code as below
public int[] zeroFront(int[] nums) {
   for(int i=1;i<nums.length;i++){
     if(nums[i]==0){
       nums[0]=0;//check other elements till end and bring to front if 0
     }
     else{}
     
   }
  return nums;
}

Open in new window





I am not passing all tests
Expected      Run            
zeroFront([1, 0, 0, 1]) → [0, 0, 1, 1]      [0, 0, 0, 1]      X      
zeroFront([0, 1, 1, 0, 1]) → [0, 0, 1, 1, 1]      [0, 1, 1, 0, 1]      X      
zeroFront([1, 0]) → [0, 1]      [0, 0]      X      
zeroFront([0, 1]) → [0, 1]      [0, 1]      OK      
zeroFront([1, 1, 1, 0]) → [0, 1, 1, 1]      [0, 1, 1, 0]      X      
zeroFront([2, 2, 2, 2]) → [2, 2, 2, 2]      [2, 2, 2, 2]      OK      
zeroFront([0, 0, 1, 0]) → [0, 0, 0, 1]      [0, 0, 1, 0]      X      
zeroFront([-1, 0, 0, -1, 0]) → [0, 0, 0, -1, -1]      [0, 0, 0, -1, 0]      X      
zeroFront([0, -3, 0, -3]) → [0, 0, -3, -3]      [0, -3, 0, -3]      X      
zeroFront([]) → []      []      OK      
zeroFront([9, 9, 0, 9, 0, 9]) → [0, 0, 9, 9, 9, 9]      [0, 9, 0, 9, 0, 9]      X      
other tests
X
How to improve my design, approach, code? please advise
0
Comment
Question by:gudii9
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 38

Accepted Solution

by:
Gerwin Jansen, EE MVE earned 2000 total points
ID: 41756288
You should keep track of the amount of zero's you've found. Exchange a 0 found with the position in the array where you've found one.

So if you start with 1, 0, 1, 1, 0, 1 the array changes like this:

0,1,1,1,0,1 (one 0 found)
0,0,1,1,1,1 (two 0 found)
0
 
LVL 7

Author Comment

by:gudii9
ID: 41756480
understood now. let me try
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 41757049
OK
0
Command Line Tips and Tricks

The command line is a powerful tool at the disposal of every Linux user. Although Linux distros come with beautiful user interfaces, it's worthwhile to learn the command line because it allows you to do a number of things that you otherwise cannot do from the GUI.  

 
LVL 7

Author Comment

by:gudii9
ID: 41758461
So if you start with 1, 0, 1, 1, 0, 1 the array changes like this:

0,1,1,1,0,1 (one 0 found)
i got above part not below part?
0,0,1,1,1,1 (two 0 found)
please advise

how to modify my psuedo code?
My psuedo code of the logic is
1. Loop through given array
2. check if the given element is zero.
3. if true bring to front.
4. else keep as it is.
5. return the modified array
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 41758484
Your pseudo code 3 - you say "bring to front", I mean "exchange 0 found with current position" - in essence the same. As long as you move the non zero number to the place where you've found a 0 then it's OK.

Like this:

1, 0, 1, 1, 0, 1 (start, my counter is 0)
0, 1, 1, 1, 0, 1 (one 0 found, my counter is 1)
0, 0, 1, 1, 1, 1 (two 0 found, my counter is 2)
0
 
LVL 7

Author Comment

by:gudii9
ID: 41759640
public int[] zeroFront(int[] nums) {
  int len=nums.length;
		int[] arr=new int[len];
		int front=0;
		int back=len-1;
		  for(int i=0;i<nums.length;i++){		    
		    if(nums[i]%2==0){	
		    	arr[front]=nums[i];
		    	front++;
		    	
		  }
		  else {
			  arr[back]=nums[i];
		    	back--;
		  }
		  }
		  return arr;
  
}




		

Open in new window


i just followed approach similar to evenOdd challenge and passing all tests.
Expected      Run            
zeroFront([1, 0, 0, 1]) → [0, 0, 1, 1]      [0, 0, 1, 1]      OK      
zeroFront([0, 1, 1, 0, 1]) → [0, 0, 1, 1, 1]      [0, 0, 1, 1, 1]      OK      
zeroFront([1, 0]) → [0, 1]      [0, 1]      OK      
zeroFront([0, 1]) → [0, 1]      [0, 1]      OK      
zeroFront([1, 1, 1, 0]) → [0, 1, 1, 1]      [0, 1, 1, 1]      OK      
zeroFront([2, 2, 2, 2]) → [2, 2, 2, 2]      [2, 2, 2, 2]      OK      
zeroFront([0, 0, 1, 0]) → [0, 0, 0, 1]      [0, 0, 0, 1]      OK      
zeroFront([-1, 0, 0, -1, 0]) → [0, 0, 0, -1, -1]      [0, 0, 0, -1, -1]      OK      
zeroFront([0, -3, 0, -3]) → [0, 0, -3, -3]      [0, 0, -3, -3]      OK      
zeroFront([]) → []      []      OK      
zeroFront([9, 9, 0, 9, 0, 9]) → [0, 0, 9, 9, 9, 9]      [0, 0, 9, 9, 9, 9]      OK      
other tests
OK

any improvement, modification, optimization to above code?
0
 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 41760126
Looks OK to me, maybe use len in the for loop instead of nums.lenght
0

Featured Post

Build and deliver software with DevOps

A digital transformation requires faster time to market, shorter software development lifecycles, and the ability to adapt rapidly to changing customer demands. DevOps provides the solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
This article will show how Aten was able to supply easy management and control for Artear's video walls and wide range display configurations of their newsroom.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Introduction to Processes

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question