File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change @@ -330,5 +330,55 @@ def min_sub_array_len(target, nums)
330
330
end
331
331
```
332
332
333
+ C:
334
+ 暴力解法:
335
+ ``` c
336
+ int minSubArrayLen (int target, int* nums, int numsSize){
337
+ //初始化最小长度为INT_MAX
338
+ int minLength = INT_MAX;
339
+ int sum;
340
+
341
+ int left, right;
342
+ for(left = 0; left < numsSize; ++left) {
343
+ //每次遍历都清零sum,计算当前位置后和>=target的子数组的长度
344
+ sum = 0;
345
+ //从left开始,sum中添加元素
346
+ for(right = left; right < numsSize; ++right) {
347
+ sum += nums[right];
348
+ //若加入当前元素后,和大于target,则更新minLength
349
+ if(sum >= target) {
350
+ int subLength = right - left + 1;
351
+ minLength = minLength < subLength ? minLength : subLength;
352
+ }
353
+ }
354
+ }
355
+ //若minLength不为INT_MAX,则返回minLnegth
356
+ return minLength == INT_MAX ? 0 : minLength;
357
+ }
358
+ ```
359
+
360
+ 滑动窗口:
361
+ ```c
362
+ int minSubArrayLen(int target, int* nums, int numsSize){
363
+ //初始化最小长度为INT_MAX
364
+ int minLength = INT_MAX;
365
+ int sum = 0;
366
+
367
+ int left = 0, right = 0;
368
+ //右边界向右扩展
369
+ for(; right < numsSize; ++right) {
370
+ sum += nums[right];
371
+ //当sum的值大于等于target时,保存长度,并且收缩左边界
372
+ while(sum >= target) {
373
+ int subLength = right - left + 1;
374
+ minLength = minLength < subLength ? minLength : subLength;
375
+ sum -= nums[left++];
376
+ }
377
+ }
378
+ //若minLength不为INT_MAX,则返回minLnegth
379
+ return minLength == INT_MAX ? 0 : minLength;
380
+ }
381
+ ```
382
+
333
383
-----------------------
334
384
<div align =" center " ><img src =https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width =500 > </img ></div >
You can’t perform that action at this time.
0 commit comments