Problem:
Return the sum of the numbers in the array, except ignore sections of numbers starting with a 6 and extending to the next 7 (every 6 will be followed by at least one 7). Return 0 for no numbers.
sum67({1, 2, 2}) → 5
sum67({1, 2, 2, 6, 99, 99, 7}) → 5
sum67({1, 1, 6, 7, 2}) → 4
Solution:
public int sum67(int[] nums) { int sum = 0; int annul7=0; for (int i =0 ; i <nums.length;i++) { if(nums[i] == 6) { for( int j = i; nums[j] != 7;j++) { nums[j] = 0; annul7 = j; } nums[annul7+1] =0; } else sum += nums[i]; } return sum; }
Or you could activate a flag when you hit a 6 and deactivate when you hit a 7 and the flag is on.
ReplyDeletepublic int sum67(int[] nums) {
Deleteint sum=0;
boolean found=false;
for(int i=0;i<nums.length;i++){
if(nums[i]==6 && found==false){
found=true;
for(int j=i;j<nums.length;j++){
if(nums[j]==7 && found==true){
found=false;
i=j;
break;
}
}
continue;
}
sum+=nums[i];
}
return sum;
}
public int sum67(int[] nums) {
Deleteint sum=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==6)
while(nums[i]!=7){
++i;
}
else
sum+=nums[i];
}
return sum;
}
Simpler:
ReplyDeletepublic int sum67(int[] nums) {
int sum = 0;
boolean found6 = false;
for (int i=0;i<nums.length;i++) {
if (nums[i] != 6 && found6 == false) {
sum = sum + nums[i];
}
if (nums[i] == 6) {
found6 = true; }
else if (nums[i] == 7) {
found6 = false;
}
}
return sum;
}
Simpler :)
ReplyDeletestatic int sum67(int[] nums){
int sum = 0;
for(int i=0; i<nums.length; i++){
if(nums[i]!=6){
sum+=nums[i];
} else {
while (nums[i]!= 7) {
i++;
}
}
}
return sum;
}
such a simple problem and the simplicity of your response is genius
Deletepublic int sum67(int[] nums) {
ReplyDeleteint result = 0;
boolean noSum = false;
for (int i = 0; i<nums.length;i++){
if (nums[i]==6) noSum=true;
if (!noSum) result+=nums[i];
if(nums[i]==7) noSum=false;
}
return result;
}
if (nums[i]==6) noSum=true; that was smart
Deletepublic int sum67(int[] nums)
ReplyDelete{
int n = nums.length;
int sum = 0;
for (int i = 0; i < n; i++)
{
if (nums[i] == 6)
{
while (nums[i] != 7)
i++;
}
else
sum += nums[i];
}
return sum;
}
hey guys, can you tell me what is wrong with my solution ? When i run the test it says they are ok, but OTHER TESTS are failed. And it won't show wich ones.
ReplyDeletesum67([1, 2, 2]) → 5 5 OK
sum67([1, 2, 2, 6, 99, 99, 7]) → 5 5 OK
sum67([1, 1, 6, 7, 2]) → 4 4 OK
sum67([1, 6, 2, 2, 7, 1, 6, 99, 99, 7]) → 2 2 OK
sum67([1, 6, 2, 6, 2, 7, 1, 6, 99, 99, 7]) → 2 2 OK
sum67([2, 7, 6, 2, 6, 7, 2, 7]) → 18 18 OK
sum67([2, 7, 6, 2, 6, 2, 7]) → 9 9 OK
sum67([1, 6, 7, 7]) → 8 8 OK
sum67([6, 7, 1, 6, 7, 7]) → 8 8 OK
sum67([6, 8, 1, 6, 7]) → 0 0 OK
sum67([]) → 0 0 OK
sum67([6, 7, 11]) → 11 11 OK
sum67([11, 6, 7, 11]) → 22 22 OK
sum67([2, 2, 6, 7, 7]) → 11 11 OK
other tests X
public int sum67(int[] nums) {
int sum = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 6){
while(i < nums.length && nums[i] != 7) i++;
i++;
}
if(i < nums.length) sum += nums[i];
}
return sum;
}
i'm very curious on what combination of numbers this logic fails.
Deletepublic int sum67(int[] nums) {
ReplyDeleteint sum=0;
int i=0;
while(i<nums.length){
if(nums[i]!=6)
sum+=nums[i];
if(nums[i]==6){
for(i=i;nums[i]!=7;i++){
nums[i]=0;
}
}
i++;
} return sum;
}
public int sum67(int[] nums) {
ReplyDeleteint sum = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 6)
if(nums[i+1] != 7) nums[i+1] = nums[i];
else nums[i+1] = 0;
}
for(int j = 0; j < nums.length; j++){
if(nums[j] == 6) nums[j] = 0;
}
for(int e: nums) sum += e;
return sum;
}
public int sum67(int[] nums) {
ReplyDeleteint sum = 0;
for(int i = 0 ; i < nums.length ; i++){
if(nums[i] == 6){
while(nums[i] != 7){
i++;
}
}else sum += nums[i];
}
return sum;
}
public int sum67(int[] nums) {
ReplyDelete// int sum=0;
// for(int i=0;i<nums.length;i++){
// if(nums[i]==6){
// while(nums[i]!=7){
// i++;
// }
// if(i!=nums.length-1)
// i++;
// else
// continue;
// }
// sum+=nums[i];
// }
// return sum;
// }
can anyone plz tell me why it failed?
def sum67(nums):
ReplyDelete#Python Solution
total = 0
counter = 0
while counter < len(nums):
if nums[counter] != 6:
total += nums[counter]
else:
while nums[counter] != 7:
counter += 1
counter += 1
return total
public int sum67(int[] nums) {
ReplyDeleteint j;
int sum=0;
for(int i=0;i<nums.length;i++)
{
if(nums[i]==6)
{
while(nums[i]!=7)
{
i++;
continue;
}
if(nums[i]==7)
{
continue;
}
}
sum=sum+nums[i];
}
return sum;
}
public int sum67(int[] nums) {
ReplyDeleteint count=0;
for(int i=0; i<nums.length; i++){
if(nums[i] != 6) count += nums[i];
else
while(nums[++i] != 7){}
}
return count;
}
public int sum67(int[] nums) {
ReplyDeleteint sum =0;
for(int i =0; i< nums.length; i++){
if(nums[i] == 6 ){
for(int j = i; i<nums.length; j++,i++){
if(nums[j] == 7) break;
}
continue;
}
sum+=nums[i];
}
return sum;
}
public int sum67(int[] nums)
ReplyDelete{
int value = 0;
for(int i = 0; i < nums.length; i++)
{
if(nums[i] == 6)
{
while(nums[i] != 7)
{
i++;
}
}
else value += nums[i];
}
return value;
}
public int sum67(int[] nums) {
ReplyDeleteint sum = 0;
boolean next7 = false;
for(int i = 0; i < nums.length; i++){
if(nums[i] != 6 && next7 == false){
sum += nums[i];
}
else if(nums[i] == 6) next7 = true;
else if(nums[i] == 7) next7 = false;
}
return sum;
}
public int sum67(int[] nums) {
ReplyDeleteint sum = 0;
boolean flag6 = false;
for(int i=0;i<nums.length;i++)
{
if(nums[i] == 6)
{
flag6 = true;
continue;
}
if(flag6)
{
if(nums[i] == 7)
{
flag6 = false;
continue;
}
}
else
{
sum += nums[i];
}
}
return sum;
}
public int sum67(int[] nums) {
ReplyDeleteint sum =0;
boolean is67 = false;
boolean f = false;
for(int i=0;i<nums.length;i++){
if(nums[i]==6){ is67 = true; f = true;}
else if(nums[i]==7 && f){ is67 = false; f=false;}
else if(!is67){
sum+=nums[i];
}
}
return sum;
}