通行证
- 积分
- 601
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-1-24
- 最后登录
- 1970-1-1
|
第一题
- public class Solution {
- public boolean subarraySum(int[] arr, int target) {
- int last = 0;
- int sum = 0;
- for (int i = 0; i < arr.length; i++) {
- sum += arr[i];
- while (sum > target) {
- sum -= arr[last++];
- }
- if (sum == target) {
- return true;
- }
- }
- return false;
- }
- public boolean subarraySumNegtive(int[] arr, int target) {
- for (int i = 1; i < arr.length; i++) {
- arr[i] += arr[i - 1];
- }
- Set<Integer> s = new HashSet<>();
- for (int i = 0; i < arr.length; i++) {
- if (s.contains(arr[i] - target)) {
- return true;
- }
- s.add(arr[i]);
- }
- return false;
- }
- public static void main(String[] args) {
- Solution ss = new Solution();
- System.out.println(ss.subarraySum(new int[] {1, 2, 3, 4, 5, 6}, 14));
- System.out.println(ss.subarraySum(new int[] {1, 2, 3, 4, 5, 6}, 10));
- System.out.println(ss.subarraySum(new int[] {1, 2, 3, 4, 5, 6}, 18));
- System.out.println(ss.subarraySum(new int[] {1, 2, 3, 4, 5, 6}, 17));
- System.out.println(ss.subarraySumNegtive(new int[] {1, -2, 3, -4, 5, -6}, 4));
- System.out.println(ss.subarraySumNegtive(new int[] {1, -2, 3, -4, 5, -6}, -5));
- System.out.println(ss.subarraySumNegtive(new int[] {1, -2, 3, -4, 5, -6}, 0));
- return;
- }
- }
复制代码 |
|