给人做ppt的网站吗,seo短视频网页入口营销策略,企业网站备案流程,如何c2c网站建设目录
1.连续最大和
2.统计回文 1.连续最大和
链接#xff1a;连续最大和_牛客题霸_牛客网 (nowcoder.com) 描述#xff1a;一个数组有 N 个元素#xff0c;求连续子数组的最大和。 例如#xff1a;[-1,2,1]#xff0c;和最大的连续子数组为[2,1]#xff0c;其和为 3 输…目录
1.连续最大和
2.统计回文 1.连续最大和
链接连续最大和_牛客题霸_牛客网 (nowcoder.com) 描述一个数组有 N 个元素求连续子数组的最大和。 例如[-1,2,1]和最大的连续子数组为[2,1]其和为 3 输入描述输入为两行。 第一行一个整数n(1 n 100000)表示一共有n个元素 第二行为n个数即每个元素,每个整数都在32位int范围内。以空格分隔。 输出描述所有连续子数组中和最大的值。 示例1 输入 3 -1 2 1 输出 3 做题思路使用 动态规划 来完成这个代码 状态方程式max(dp[i]) getMax(max(dp[i-1]) arr[i], arr[i]) dp[i]以 i 结尾的子数组最大和 会涉及到一个以上的状态方程式接下来我们来仔细分析一下求 dp[i] 的时候有两种情况
1️⃣dp[i] dp[i - 1] arr[i]
2️⃣arr[i] import java.util.Scanner;public static int getMax(int a, int b) {return a b ? a : b;//找两个数的最大值}public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();//首先需要定义nint[] arr new int[n];//定义一个数组for (int i 0; i n; i) {arr[i] scanner.nextInt();}int cur arr[0];//连续子数组和int max arr[0];//当前最大子数组和for (int i 1; i n; i) {cur getMax(cur arr[i], arr[i]);//判断两个值的最大值if (cur max) {max cur;}}System.out.println(max);}
2.统计回文
链接统计回文_牛客题霸_牛客网 (nowcoder.com) “回文串”是一个正读和反读都一样的字符串比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。 例如 A “aba”B “b”。这里有4种把B插入A的办法 * 在A的第一个字母之前: baba 不是回文 * 在第一个字母‘a’之后: abba 是回文 * 在字母‘b’之后: abba 是回文 * 在第二个字母a之后 abab 不是回文 所以满足条件的答案为2 输入描述每组输入数据共两行。 第一行为字符串A 第二行为字符串B 字符串长度均小于100且只包含小写字母 输出描述输出一个数字表示把字符串B插入字符串A之后构成一个回文串的方法数 示例1 输入 aba b 输出2 做题思路逆置
1️⃣在合适的位置插入
2️⃣通过 逆置 判断是否为回文 在进行逆置的时候需要注意的是❗❗❗1️⃣只有 StringBuffer 和 StringBuilder 有逆置并且不可以直接逆置直接逆置会将学原来的StringBuffer也逆置只能重新定义一个StringBuffer 2️⃣逆置相比较的时候不可以直接使用equals因为StringBuffer不是字符串类型需要用to.String变成字符串类型 import java.util.Scanner;public class Main {//做题思路逆置//1️⃣在合适的位置插入//2️⃣通过 逆置 判断是否为回文//在进行逆置的时候需要注意的是❗❗❗只有 StringBuffer 和 StringBuilder 有逆置// 并且逆置相比较的时候不可以直接使用equals因为StringBuffer不是字符串类型需要用to.String变成字符串类型Scanner scanner new Scanner(System.in);String str1 scanner.nextLine();String str2 scanner.nextLine();int len str1.length();int count 0;for (int i 0; i len; i) {//可以放在最后所以i lenStringBuffer str3 new StringBuffer(str1);str3.insert(i, str2);//在str3的每一个位置都插入str2//只有 StringBuffer 和 StringBuilder 有逆置并且不可以直接逆置如果直接str3.reverse那么str3也将会逆置只能重新第一一个StringBufferStringBuffer str4 new StringBuffer(str3);StringBuffer str5 str4.reverse();//逆置相比较的时候不可以直接使用equals//因为StringBuffer不是字符串类型需要用to.String变成字符串类型if (str5.toString().equals(str3.toString())) {count;}}System.out.println(count);}
}