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