Interview Questions

  • View all tutorials
  • blank
  • Oddball sum
    The practice coding question created by App Academy:
    Write a function called oddball_sum which takes in a list of numbers and returns the sum of all the odd elements.
    To solve this challenge we'll simply loop through the array while maintaining a final count, and every time an odd number is encountered we'll add it to the count.

    Sources

    http://prepwork.appacademy.io/coding-test-1/practice-coding-exercise/

    Code

    function oddball_sum(nums) {
     
      // final count of all odd numbers added up
      var final_count = 0;
      
      // loop through entire list
      for (var i = 0; i < nums.length; i++) {
        
        // we divide by 2, and if there is a remainder then
        // the number must be odd so we add it to final_count
        if (nums[i] % 2 === 1) {
          final_count += nums[i]
        }
        
      }
      
      return final_count;
      
    }
    
    oddball_sum([1, 2, 3, 4, 5]); 
    
    def oddball_sum(nums):
      
      # final count of all odd numbers added up
      final_count = 0
      
      # loop through entire list
      for i in xrange(0, len(nums)):
    
        # we divide by 2, and if there is a remainder then
        # the number must be odd so we add it to final_count
        if nums[i] % 2 == 1:
          final_count += nums[i]
          
      return final_count
    
    print oddball_sum([1, 2, 3, 4, 5])
    
    Run Code
    Run Code
    mrdaniel published this on 1/31/16 | javascript, bootcamp, array, App Academy
    Comments
  • +
  • 4
  • -
  • @thedragon That's actually more abstract, which makes it more dificult for someone learning JavaScript to grasp the concepts of iteration. In your example you're introducing: built-in methods, higher-order functions/callbacks, scoping, and the introduction of a call stack (via reduce). So, no. That's not simpler for a beginner. It's probably the route I'd take in solving the problem, but it's not how I'd teach a beginner about iteration and conditional checking. Also, it's not any faster as both solutions run in a linear time complexity.
  • +
  • 1
  • -
  • I agree with @richardjboothe. @thedragon - your code doesn't seem to take into account if the first element in the array is not an odd number. Will work with [1, 2, 3, 4, 5], but not with [2, 3, 4, 5].
  • +
  • 1
  • -
  • Why don't you use reduce? Isn't this simpler?
    function oddball_sum(nums) {
      return nums.reduce(function(total, item){
      	if (item % 2 === 1) {
      		return total += item;
      	}
      	return total;
      });
    }
    
    Log in to submit a comment.