אפר.17

למצוא כמות תת מערכים שסכום שלהם k

למצוא כמות תת מערכים שסכום שלהם k

יש למצוא כמות תת מערכים שסכום שלהם שווה ל k. nums = [1,1,1], k = 2 תשובה: 2 יכולים להיות מספרים שליליים במערך.

  1. //Solution 1 (with dictionary - see image)
  2. public int SubarraySum(int[] nums, int k) {
  3. int count = 0, sum = 0;
  4. Dictionary<int, int> map = new Dictionary<int, int> {
  5. [0] = 1
  6. };
  7. for (int i = 0; i<nums.Length;i++) {
  8. sum+=nums[i];
  9. if(map.ContainsKey(sum-k))
  10. count+=map[sum-k];
  11. if(map.ContainsKey(sum))
  12. map[sum]++;
  13. else
  14. map.Add(sum, 1);
  15. }
  16. return count;
  17. }
  18.  
  19. //Solution 2 (Sliding Window)
  20. public int SubarraySum(int[] nums, int k) {
  21. int count = 0;
  22. for(int i=0;i<nums.Length;i++) {
  23. int sum = nums[i];
  24. if(sum == k)
  25. count++;
  26. for(int j = i+1; j<nums.Length;j++){
  27. sum+=nums[j];
  28. if(sum==k)
  29. count++;
  30. }
  31. }
  32. return count;
  33. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה