【笔试强化】Day 5

一、单选

1.

在这里插入图片描述

正确答案:A

2.

在这里插入图片描述
在这里插入图片描述

正确答案:C

x.append 就变成了 AB
x 修改了引用
y 修改的是对象,对本身并不发生改变

3.

在这里插入图片描述

正确答案:B

this. 的是其他的普通方法和成员变量

4.

在这里插入图片描述

正确答案:C

没有初始化

5.

在这里插入图片描述

正确答案:D

6.

在这里插入图片描述
在这里插入图片描述

正确答案:C

7.

在这里插入图片描述

正确答案:B

8.

在这里插入图片描述

正确答案:C

9.

在这里插入图片描述
在这里插入图片描述

正确答案:B

str 改变的是形参的指向,原来不会改变
ch 修改的是地址,原来会改变

二、不定项选择

1.

在这里插入图片描述

正确答案:A,B,D

C:是不可重写

三、编程

1. 统计回文

在这里插入图片描述
原题链接


题解:

遍历 A,将 B insert进入 A 的每个位置,判断是否是回文

这里注意的是,判断回文的时候,直接将字符串逆置,看是否相同就好了

需要注意的是这里不能 A.insert(i, B),这样的话 A 改变了,判断下一个位置就不对了

所以每次使用 A 重新给一个str,然后str.insert(i, B),再判断。


代码:

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String A = sc.nextLine();
        String B = sc.nextLine();

        int ret = 0;
        for(int i = 0; i <= A.length(); i++) {
            StringBuilder s = new StringBuilder(A);
            s.insert(i,B);
            StringBuilder tmp = new StringBuilder(s);
            StringBuilder s1 = tmp.reverse();
            if(s.toString().equals(s1.toString())) {
                ret++;
            }
        }
        System.out.println(ret); 
    }
}

在这里插入图片描述


2. 连续最大和

在这里插入图片描述
原题链接


题目解析:

1. 状态表示:

dp[i] 表示:以 i 位置元素为结尾的所有子数组的最大和

2. 状态转移方程

dp[i] 的所有可能可以分为以下两种:

  1. 子数组的长度为 1 :此时 dp[i] = nums[i]
  2. 子数组的长度大于 1 :此时 dp[i] 应该等于以 i - 1 做结尾的「所有子数组」中和的最⼤值再加上 nums[i]
    也就是 dp[i - 1] + nums[i]

由于我们要的是「最大值」,因此应该是两种情况下的最大值,因此可得转移方程:

dp[i] = max(nums[i], dp[i - 1] + nums[i])

3. 初始化

可以在最前⾯加上⼀个「辅助结点」,帮助我们初始化

  • 辅助结点里面的值要「保证后续填表是正确的」
  • 「下标的映射关系」

「最前⾯加上⼀个格子,并且让 dp[0] = 0

4. 填表顺序

从左往右

5. 返回值

返回整个 dp 表中的最大值

代码:

class Solution {
    public int maxSubArray(int[] nums) {
        int n = nums.length;
        int[] dp = new int[n+1];
        dp[0] = 0;
        int ret = Integer.MIN_VALUE;
        for(int i = 1; i <= n; i++) {
            dp[i] = Math.max(nums[i-1], dp[i-1] + nums[i-1]);
            ret = Math.max(ret,dp[i]);
        }
        return ret;
    }
}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柒柒要开心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值