Java > Array-2 > sum13 (CodingBat Solution)

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];
      if(i>0 && nums[i-1] == 13)
        sum -= nums[i];
    }
  }
  return sum;
}


11 comments :

  1. My solution:

    public int sum13(int[] nums) {

    int sum = 0;

    for (int i = 0; i < nums.length; i++) {
    if (nums[i] == 13 || i > 0 && nums[i - 1] == 13) {
    continue;
    } else {
    sum += nums[i];
    }
    }

    return sum;
    }

    ReplyDelete
  2. Another way:

    public int sum13(int[] nums) {
    int sum = 0;
    for (int i = 0; i < nums.length; i++) {
    if (nums[i] == 13) {
    i++;
    continue;
    }
    sum += nums[i];
    }
    return sum;
    }

    ReplyDelete
  3. Another way:

    public int sum13(int[] nums) {

    int sum = 0;

    for (int i = 0; i < nums.length; i++) {

    if (nums.length>0) {

    if (nums[i] < 13 || nums[i] > 13) sum += nums[i];
    else i++;

    }

    }

    return sum;
    }

    ReplyDelete
  4. This is my solution.

    public int sum13(int[] nums) {
    if(nums.length==0) return 0;

    int i=0;
    int count=0;
    while(i<nums.length) {


    if(nums[i]!=13 ){
    count+=nums[i];


    }

    else {
    if(nums[i]==13 && i+1<nums.length) {
    nums[i+1]=0;
    }
    }


    i++;
    }

    return count;

    }

    ReplyDelete
  5. int n=0;
    for(int i=0;i<nums.length;i++){
    if(nums[i]==13){
    i++;
    continue;
    }
    n+=nums[i];
    }
    return n;

    ReplyDelete
  6. public int sum13(int[] nums) {
    int sum = 0;
    for (int i=0; i<nums.length; i++) {
    if (nums[i]==13) i++;
    else sum+=nums[i];
    }
    return sum;
    }

    ReplyDelete
  7. public int sum13(int[] nums) {
    int sum=0;
    for(int i=0;i=13)
    return sum-13;
    else
    return sum;
    }

    ReplyDelete
    Replies
    1. public int sum13(int[] nums) {
      int sum=0;

      for(int i=0;i<=nums.length-1;i++) {

      sum+=nums[i];
      if(nums[i]==13) {
      sum=sum-nums[i];
      i=i+1;
      }
      }


      return sum;
      }

      Delete
  8. public int sum13(int[] nums) {
    int sum = 0;
    if(nums.length == 0){
    return 0;
    }

    for(int i = 0; i < nums.length; i ++){
    if (nums[i] < 13 || nums[i] > 13){
    sum += nums[i];
    } else i++;


    }
    return sum;

    }

    ReplyDelete
  9. public int sum13(int[] nums)
    {
    int value = 0;

    if(nums.length < 1)
    {
    return 0;
    }

    for(int i = 0; i < nums.length; i++)
    {

    if(nums[i] == 13) i++;
    else value = value + nums[i];
    }

    return value;
    }

    ReplyDelete
  10. I am getting out of bound exception when array length is 5 or higher. public int sum13(int[] nums) {
    int sum = 0;

    for (int i=0;i<nums.length;i++) {
    if (nums.length <= 0) {
    return(0);
    }
    if(nums[i]!=13){
    sum+=nums[i];
    }

    else {

    sum -= nums[i] - nums[i+1];
    }



    }return (sum);
    }

    ReplyDelete

Follow Me

If you like our content, feel free to follow me to stay updated.

Subscribe

Enter your email address:

We hate spam as much as you do.

Upload Material

Got an exam, project, tutorial video, exercise, solutions, unsolved problem, question, solution manual? We are open to any coding material. Why not upload?

Upload

Copyright © 2012 - 2014 Java Problems  --  About  --  Attribution  --  Privacy Policy  --  Terms of Use  --  Contact