欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 京东笔试题

京东笔试题

2024/10/24 3:42:50 来源:https://blog.csdn.net/lt6666678/article/details/143143944  浏览:    关键词:京东笔试题

和谐敏感词

🔗 题目地址

在这里插入图片描述

🎉 模拟

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();String s = scanner.next();String[] words = new String[n];for (int i = 0; i < n; i++) {words[i] = scanner.next();}boolean[] st = new boolean[s.length()];for (int i = 0; i < n; i++) {int pos = 0;while(true) {pos = s.indexOf(words[i], pos);if(pos == -1)break;for (int j = pos; j < pos + words[i].length(); j++)st[j] = true;pos += 1;}}char[] ans = s.toCharArray();for(int i = 0; i < st.length; i++)if(st[i])ans[i] = '*';System.out.println(ans);}
}

每个区间内第k小的数

🔗 题目地址
在这里插入图片描述

🎉 大根堆


import java.util.PriorityQueue;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++)a[i] = sc.nextInt();PriorityQueue<Integer> heap = new PriorityQueue<>((o1, o2) -> o2 - o1);for (int i = 0; i < n; i++) {if (i < k - 1) {heap.add(a[i]);System.out.print(-1 + " ");continue;}if(heap.size() < k)heap.add(a[i]);else{if(a[i] < heap.peek()){heap.poll();heap.add(a[i]);}}System.out.print(heap.peek() + " ");}}
}

挑选战队

🔗 题目地址
在这里插入图片描述

🎉 二分 + 状态压缩DP

import java.util.Scanner;public class Main {private static final int INT_MAX = Integer.MAX_VALUE;static int n,m,k;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int t = sc.nextInt(); // 读取样例个数for (int testCase = 0; testCase < t; testCase++) {n = sc.nextInt(); // 读取nm = sc.nextInt(); // 读取mk = sc.nextInt(); // 读取kint[][] attr = new int[n][m]; // 创建属性数组// 读取每个队员的属性值for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {attr[i][j] = sc.nextInt();}}// 二分查找初始化int l = 1, r = 1005, ans = 0;while (l < r) {int mid = (l + r) >> 1; // 计算中间值// 检查是否可以通过选择k个人达到战斗力midif (isPossible(attr, mid)) {ans = mid; // 更新答案l = mid + 1; // 增大左边界} else {r = mid; // 缩小右边界}}System.out.println(ans); // 输出结果}sc.close();}/*** 检查是否可以通过选择k个人达到战斗力mid* @param attr 队员的属性数组* @param mid 当前尝试的战斗力* @return 是否可以达到战斗力mid*/private static boolean isPossible(int[][] attr, int mid) {int fullMask = (1 << m) - 1; // 全属性掩码int[] masks = new int[n]; // 每个队员的属性掩码for (int i = 0; i < n; i++) { // 枚举每个队员int mask = 0;for (int j = 0; j < m; j++) {// 枚举队员的每个属性if (attr[i][j] >= mid) {mask |= (1 << j); // 更新掩码}}masks[i] = mask; // 存储掩码}int[] dp = new int[1 << m]; // dp[state]:表示达到 state 的状态需要的最少人数for (int i = 0; i < dp.length; i++) {dp[i] = INT_MAX; // 初始化dp数组}dp[0] = 0; // 初始状态// 更新dp数组for (int i = 0; i < n; i++) {int pmask = masks[i]; // 当前队员的属性掩码for (int state = 0; state < fullMask; state++) {if (dp[state] != INT_MAX) { // 起点是 state,借助 pmask 转移,重点是(state|pmask)dp[state | pmask] = Math.min(dp[state | pmask], dp[state] + 1); // 更新dp数组}}
//            for (int state = fullMask; state >= 0; state--) {
//                if (dp[state] != INT_MAX) { // 起点是 state,借助 pmask 转移,重点是(state|pmask)
//                    dp[state | pmask] = Math.min(dp[state | pmask], dp[state] + 1); // 更新dp数组
//                }
//            }}return dp[fullMask] <= k; // 检查是否可以通过选择k个人达到战斗力mid}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com