Problem:
Return the sum of the numbers in the array, returning 0 for an empty array. Except the number 13 is very unlucky, so it does not count and numbers that come immediately after a 13 also do not count.
sum13({1, 2, 2, 1}) → 6
sum13({1, 1}) → 2
sum13({1, 2, 2, 1, 13}) → 6
Solution:
public int sum13(int[] nums) { int sum =0; for (int i = 0;i <nums.length ;i++) { if (nums[i] != 13) sum+=nums[i]; else if (nums[i] == 13 && i < nums.length -1 ) { nums[i]=0; nums[i+1] =0; } } return sum; }
Great site! I'm glad to see a resource to see how others have solved the same problems. I happened to use a slightly different strategy: I incremented the index to skip the next value.
ReplyDeleteThat solves the extra conditional problem I think you came across to prevent an out-of-bounds exception.
public int sum13(int[] nums) {
if (nums.length == 0) return 0;
int sum = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != 13) sum += nums[i];
else {
i++;
}
}
return sum;
}
This one's a lot cleaner and nicer. I came up with this solution as well.
Deletepublic int sum13(int[] nums) {
ReplyDeleteint sum = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == 13) {
i++;
} else {
sum += nums[i];
}
}
return sum;
}
here is my solution
ReplyDeletepublic int sum13(int[] arr)
{
int arrSize = arr.length;
int sum = 0;
if(arr.length == 0 ) return 0;
for(int i = 0, j = 1; i < arrSize; i++ , j++)
{
if(arr[i] == 13 ||(i > 0 && arr[i-1] == 13))
{
continue;
}
else
{
sum+= arr[i];
}
}
return sum;
}
How bah dah?
ReplyDeletepublic int sum13(int[] nums) {
int sum = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] == 13){
i += 1;
continue; }
sum += nums[i];
}
return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint sum=0;
if(nums.length==0){
return 0;
}
for(int i=0;i0&&nums[i-1]==13){
continue;
}
sum+=nums[i];
}
return sum;
}
This is my solution, 100 % mine.
ReplyDeletepublic int sum13(int[] nums) {
int count=0;
for(int i=0;i<nums.length;i++) {
if(nums[i]!=13) {
count+=nums[i];
}
if(nums[i]==13){
if(i+1<nums.length){
nums[i+1]=0;
}
}
}
return count;
}
mine is this...
ReplyDeletepublic int sum13(int[] nums) {
int sum = 0;
for(int i=0; i<nums.length; i++)
{
if(nums[i] != 13)
{
sum+=nums[i];
} else
{
i++;
if(i == nums.length-2 || i == nums.length -1)
{
break;
}
}
}
return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint sum =0;
if(nums.length<0)
{
return 0;
}else
{
for(int i=0; i<nums.length; i++)
{
if(nums[i]==13)
{
i=i+1;
}else
{
sum = sum + nums[i];
}
}
}return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint sum = 0;
for (int i = 0; i < nums.length; i++)
if (nums[i] == 13)
i++;
else sum += nums[i];
return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint sum=0;
for(int i=0;i<nums.length;i++)
{
if(nums[i]==13)
{
i=i+1;
continue;
}
sum+=nums[i];
}
return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint sum=0;
for(int i=0;i<nums.length;i++)
{
if(nums[i]==13)
{
i=i+1;
continue;
}
sum =sum+ nums[i];
continue;
}
return sum;
}
public int sum13(int[] nums) {
ReplyDeleteint count = 0 ;
for (int x = 0 ; x < nums.length; x ++){
if(nums[x] != 13){
count += nums[x] ;
}
else
x += 1 ;
}
return count ;
}