LeetCode刷题
1.53最大和的连续子数组
给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
class Solution { public int maxSubArray(int[] nums) { int sum = 0; int res = nums[0]; for(int num:nums){ if(sum > 0) sum += num; else sum = num; res = Math.max(sum,res); } return res; } }
解析:num为数组的当前元素,sum为和,如果sun为负数就指向当前元素,如果为正就加上当前元素
res保留上一次求和的值,和当前的sum取最大值。
2.30有效字符串
package com.recorder.servlet; import java.util.LinkedList; /** * @author 紫英 * @version 1.0 * @discription 有效字符串——括号匹配问题 */ public class A { public static void main(String[] args) { System.out.println(isValid("{}")); System.out.println(isValid("{}(")); System.out.println(isValid("{}()[]}")); System.out.println(isValid("")); } //使用链表来模拟栈结构 private static boolean isValid(String s){ if ("".equals(s) || s.length() == 0) return true;//空串为真直接返回 LinkedList<Character> list = new LinkedList<>(); for (char c : s.toCharArray()) { if (c == '{') list.push('}'); else if (c == '[') list.push(']'); else if (c == '(') list.push(')'); /** * 1.如果读取到的是左括号,那么右括号必定入栈,肯定不是空 * 2.如果是空的话说明读到的是单个一个右括号 * 3.如果是一对对应的括号,如果读取到左一定会让右入栈,那么在读取到右出栈的时候 * 一定是与当初入栈的元素相同的,而且不为空 * 4.如果这两个条件的都不满足就说明含有单一括号 * (还有一种情况是单一的左括号,出栈的时候找不到对应的,所以也是不等) */ else if (list.isEmpty() || c != list.pop()) return false; } //如果在上面的判断种没有返回false,说明安全出栈了,也就表明是对应的括号,可以返回true return list.isEmpty(); } }
本文来自博客园,作者:紫英626,转载请注明原文链接:https://www.cnblogs.com/recorderM/p/15999045.html