diff --git a/src/main/java/com/dota/slidingWindow/_2134/Solution.java b/src/main/java/com/dota/slidingWindow/_2134/Solution.java new file mode 100644 index 0000000..44f9ea4 --- /dev/null +++ b/src/main/java/com/dota/slidingWindow/_2134/Solution.java @@ -0,0 +1,34 @@ +package com.dota.slidingWindow._2134; + +class Solution { + public int minSwaps(int[] nums) { + int k = 0; + for (int num : nums) { + if (num == 1) k++; + } + + if (k == 0 || k == nums.length) return 0; + int n = nums.length; + int cnt = 0; + for (int i = 0; i < k; i++) { + cnt += nums[i]; + } + int min = cnt; + int l = 0; + for (int i = k; i < n + k - 1; i++) { + int idx = i; + if (i >= n) { + idx = i - n; + } + if (nums[idx] == 0) { + cnt++; + } + if (nums[l++] == 0) { + cnt--; + } + + min = Math.min(min, cnt); + } + return min; + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/stack/Solution.java b/src/main/java/com/dota/stack/Solution.java new file mode 100644 index 0000000..6d8d318 --- /dev/null +++ b/src/main/java/com/dota/stack/Solution.java @@ -0,0 +1,24 @@ +package com.dota.stack; + +class Solution { + public boolean canBeValid(String s, String locked) { + if (s.length() % 2 == 1) { + return false; + } + int min = 0, max = 0; + for (int i = 0; i < s.length(); i++) { + if (locked.charAt(i) == '1') { //不能改 + int d = s.charAt(i) == '(' ? 1 : -1; + min += d; + max += d; + if (max<0) return false; + } else { //可以改 + max++; + min--; + } + if (min<0) min=1; + } + + return min == 0; + } +} \ No newline at end of file