class Solution {public int maxSubArray(int[] nums) {int maxans=Integer.MIN_VALUE;int maxval=Integer.MIN_VALUE; for (int i = 0; i < nums.length; i++) { if(maxans>0) maxans+=nums[i]; //负数,表明对后面的求和无正帮助。因此重置maxans else maxans=nums[i]; //每次需要保存更新最大值! maxval=Math.max(maxval,maxans); } return maxval;}}
class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {//数组1 容量足够,考虑将2合并到1尾部从尾到头合并,有序 int i=m-1; int j=n-1; int k=m+n-1; //有一个不满足则跳出循环 while(i>=0 && j>=0){if(nums1[i]<nums2[j]) {nums1[k]=nums2[j]; k--;j--;}else{nums1[k]=nums1[i]; k--;i--;} }// 表示将nums2数组从下标0位置开始,拷贝到nums1数组中,从下标0位置开始,长度为j+1 System.arraycopy(nums2, 0, nums1, 0, j + 1);}}
class Solution {public boolean isPalindrome(String s) {int i=0,j=s.length()-1; while(i<j){ //需要i<j &&保证不会超限 while(i<j && !Character.isLetterOrDigit(s.charAt(i))) i++; while(i<j && !Character.isLetterOrDigit(s.charAt(j))) j--; //这里也需要判断一下,保证此时满足条件 if(i<j) { if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) return false; i++; j--; } } return true;}}