京东笔试9.9

100 80 20小记一下
1.只有r、e、d的字符串相邻相同字符如dd变成一个字符,最终相邻都不相等的最小变化次数(A)
import java.util.Scanner;

public class _jd1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int ans=0;
        int count=0;
        for (int i=0; i<str.length()-1; i++){
            if (str.charAt(i)==str.charAt(i+1)&& i<str.length()-2 && str.charAt(i+1)==str.charAt(i+2) ) {
                i+=2;
                ans++;
            }
            else if (str.charAt(i)==str.charAt(i+1)){
                i++;
                ans++;
            }
        }
        System.out.println(ans);
    }
}

2.n个数取子集,子集任意2数和为偶数(80%)
计算奇数和偶数个数,快速幂算子集个数,还有20在哪?
import java.util.Scanner;

public class _jd2 {

    static final int MOD = 1000000007;
    public static long fastpow(long x, int n){
        long ans = 1 % MOD;
        while ( n!=0 ){
            if ((n&1)!=0)
                ans = (ans*x) % MOD;
            x = (x*x) % MOD;
            n >>= 1;
        }
        return ans;
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int ji=0,ou=0;
        for(int i=0; i<n; i++){
            if ((sc.nextInt()&1)==1) ji++;
            else ou++;
        }
        System.out.println(fastpow(2,ji)-ji-1 + fastpow(2,ou)-ou-1 );
    }
}
3.k位的数字转字符,方案数等于k?只过了20求思路

#京东笔试##京东2023秋招笔试好难啊#
全部评论
第三题有点类似斐波那契数列
点赞 回复 分享
发布于 2022-09-09 16:15 北京
有大佬看看我这第二题算法有什么问题吗 ``` #include<bits/stdc++.h> using namespace std; int combine(int m, int n){     if(m == 1)         return n;     return n / m * combine(m - 1, n - 1); } int main(){     freopen("jindong2.txt","r",stdin);     int n, evens = 0, odds = 0;     cin >> n;     vector<int> nums(n);          for(int i = 0; i < n; i++){         cin >> nums[i];         if(nums[i] % 2 == 0)             evens++;         if(nums[i] % 2 == 1)             odds++;     }     int res1 = 0, res2 = 0;     for(int i = 2; i <= evens; i++){         res1 = (res1 + combine(i, evens)) % 1000000007;     }     for(int i = 2; i <= odds; i++){         res2 = (res2 + combine(i, evens)) % 1000000007;     }     cout << res1 + res2 << endl; } ```
点赞 回复 分享
发布于 2022-09-09 15:18 广东
不用快速幂,用Cnk 2~n的和会有什么问题吗
点赞 回复 分享
发布于 2022-09-09 14:15 上海
请问 第一题 str.charAt(i+1)==str.charAt(i+2)  这个判断是为什么?
点赞 回复 分享
发布于 2022-09-09 15:56 河南
蹲第三题题解
点赞 回复 分享
发布于 2022-09-09 16:56 甘肃
第二题20%可能是最后两个相加的时候没mod?
2 回复 分享
发布于 2022-09-09 13:54 福建
老哥,你第二题代码没填全。
点赞 回复 分享
发布于 2022-09-09 13:45 北京
求问dalao,第一题如果是reeeed的话,四个连续的,不是可以变一次变成reded,把中间两个换掉,这样ans不是可以只+1么,不理解这块第一题只过了20
点赞 回复 分享
发布于 2022-09-14 16:54 北京

相关推荐

死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
评论
8
11
分享
牛客网
牛客企业服务