剑指Offer之Java算法习题精讲求和篇

网友投稿 299 2022-08-19


剑指Offer之Java算法习题精讲求和篇

题目一

解法

/**

* Definition for singly-linked list.

* public class ListNode {

* int val;

* ListNode next;

* ListNode() {}

* ListNode(int val) { this.val = val; }

* ListNode(int val, ListNode next) { this.val = val; this.next = next; }

* }

*/

class Solution {

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

ListNode node = new ListNode(-1);

ListNode ans = node;

int carryYjrmrLfbR = 0;

while (l1 != null || l2 != null) {

YjrmrLfbR int n1 = l1 != null ? l1.val : 0;

int n2 = l2 != null ? l2.val : 0;

int sum = n1+n2+carry;

carry = 0;

node.next = new ListNode(sum%10);

node = node.next;

if(sum/10>=1){

carry = 1;

}

if(YjrmrLfbRl1!=null){

l1 = l1.next;

}

if(l2!=null){

l2 = l2.next;

}

}

if(carry>=1){

node.next = new ListNode(1);

}

return ans.next;

}

}

第二题

解法

class Solution {

public int lengthOfLongestSubstring(String s) {

Set occ = new HashSet();

int rk = -1, ans = 0;

for(int i = 0;i

if (i != 0) {

occ.remove(s.charAt(i - 1));

}

while(rk+1

occ.add(s.charAt(rk + 1));

++rk;

}

ans = Math.max(ans, rk - i + 1);

}

return ans;

}

}

第三题

解法

class Solution {

public int sumOfUnique(int[] nums) {

int sum = 0;

int[] arr = new int[101];

for(int i = 0;i

arr[nums[i]]+=1;

}

for(int i = 0;i

if(arr[i]==1){

sum+=i;

}

}

return sum;

}

}

第四题

解法

class Solution {

public int maxAscendingSum(int[] nums) {

if(nums.length==1) return nums[0];

int sum = nums[0];

int max = Integer.MIN_VALUE;

for(int i =1;i

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}

if (i != 0) {

occ.remove(s.charAt(i - 1));

}

while(rk+1

occ.add(s.charAt(rk + 1));

++rk;

}

ans = Math.max(ans, rk - i + 1);

}

return ans;

}

}

第三题

解法

class Solution {

public int sumOfUnique(int[] nums) {

int sum = 0;

int[] arr = new int[101];

for(int i = 0;i

arr[nums[i]]+=1;

}

for(int i = 0;i

if(arr[i]==1){

sum+=i;

}

}

return sum;

}

}

第四题

解法

class Solution {

public int maxAscendingSum(int[] nums) {

if(nums.length==1) return nums[0];

int sum = nums[0];

int max = Integer.MIN_VALUE;

for(int i =1;i

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}

occ.add(s.charAt(rk + 1));

++rk;

}

ans = Math.max(ans, rk - i + 1);

}

return ans;

}

}

第三题

解法

class Solution {

public int sumOfUnique(int[] nums) {

int sum = 0;

int[] arr = new int[101];

for(int i = 0;i

arr[nums[i]]+=1;

}

for(int i = 0;i

if(arr[i]==1){

sum+=i;

}

}

return sum;

}

}

第四题

解法

class Solution {

public int maxAscendingSum(int[] nums) {

if(nums.length==1) return nums[0];

int sum = nums[0];

int max = Integer.MIN_VALUE;

for(int i =1;i

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}

arr[nums[i]]+=1;

}

for(int i = 0;i

if(arr[i]==1){

sum+=i;

}

}

return sum;

}

}

第四题

解法

class Solution {

public int maxAscendingSum(int[] nums) {

if(nums.length==1) return nums[0];

int sum = nums[0];

int max = Integer.MIN_VALUE;

for(int i =1;i

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}

if(arr[i]==1){

sum+=i;

}

}

return sum;

}

}

第四题

解法

class Solution {

public int maxAscendingSum(int[] nums) {

if(nums.length==1) return nums[0];

int sum = nums[0];

int max = Integer.MIN_VALUE;

for(int i =1;i

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}

if(nums[i]>nums[i-1]){

sum +=nums[i];

max = Math.max(max,sum);

}else{

max = Math.max(max,sum);

sum = nums[i];

}

}

return max;

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Spring与MyBatis的整合的方法
下一篇:Java堆&优先级队列示例讲解(下)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~