给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0;
int maxAns = nums[0];
for (int x : nums) {
pre = Math.max(pre + x, x);
maxAns = Math.max(maxAns, pre);
}
return maxAns;
}
}
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--)
{
digits[i]++;
digits[i] %= 10;
if (digits[i] != 0) {
return digits;
}
}
digits = new int[digits.length + 1];
digits[0] = 1;
return digits;
}
}
给你一个字符串 s
,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World"
输出:5
class Solution {
public int lengthOfLastWord(String s) {
int ans = 0;
char[] sChar = s.toCharArray();
for (int i = sChar.length - 1; i >= 0; i--) {
if (sChar[i] == ' ') {
if (ans == 0) {
continue;
}
return ans;
}
ans++;
}
return ans;
}
}
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
class Solution {
public int mySqrt(int x) {
if (x <= 1) {
return x;
}
long left = 1;
long right = x / 2;
while (left <= right) {
long mid = (right + left) / 2;
long square = mid * mid;
if (square <= x) {
left = mid + 1;
}
else {
right = mid - 1;
}
}
return (int)right;
}
}
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
**注意:**给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶
class Solution {
public int climbStairs(int n) {
if (n <= 1)
return 1;
int[] temp = new int[n + 1];
temp[0] = 1;
temp[1] = 1;
for (int i = 2; i <= n; i++) {
temp[i] = temp[i - 2] + temp[i - 1];
}
return temp[n];
}
}
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return null;
}
ListNode temp = head;
while (temp.next != null) {
if (temp.val == temp.next.val) {
if (temp.next.next == null)
temp.next = null;
else
temp.next = temp.next.next;
} else {
temp = temp.next;
}
}
return head;
}
}