leetcode523 Continuous Subarray Sum
生活随笔
收集整理的這篇文章主要介紹了
leetcode523 Continuous Subarray Sum
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
思路:
令sum[p]表示p位置的前綴和。如果sum[i] % k == sum[j] % k (j - i > 1),則存在子段(i, j]的和能夠整除k。
實(shí)現(xiàn):
1 class Solution 2 { 3 public: 4 bool checkSubarraySum(vector<int>& nums, int k) 5 { 6 if (nums.size() < 2) return false; 7 int n = nums.size(); 8 for (int i = 0; i < n - 1; i++) 9 if (nums[i] == 0 && nums[i + 1] == 0) 10 return true; 11 if (k == 0) return false; 12 int sum = 0; 13 unordered_map<int, int> m; 14 m[0] = -1; 15 for (int i = 0; i < n; i++) 16 { 17 sum = (sum + nums[i]) % k; 18 if (m.count(sum)) 19 { 20 if (i - m[sum] > 1) 21 return true; 22 } 23 else m[sum] = i; 24 } 25 return false; 26 } 27 };?
轉(zhuǎn)載于:https://www.cnblogs.com/wangyiming/p/7445218.html
總結(jié)
以上是生活随笔為你收集整理的leetcode523 Continuous Subarray Sum的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oc58--Category注意事项
- 下一篇: 在C++函数中使用__asm int 3