给定长度为 m 的序列 T ,求一个长度为 n 且字典序最小的排列.并且要求序列 T 为所求排列的子序列.题目保证这样的排列一定存在. S 是 T 的子序列,当且仅当 S 是 T 通过删除任意数量元素所得到的. 字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。-笔试面试资料
这是qklbishe.com第7433 篇笔试面试资料
提供答案分析,通过本文《给定长度为 m 的序列 T ,求一个长度为 n 且字典序最小的排列.并且要求序列 T 为所求排列的子序列.题目保证这样的排列一定存在.
S 是 T 的子序列,当且仅当 S 是 T 通过删除任意数量元素所得到的. 字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
给定长度为 m 的序列 T ,求一个长度为 n 且字典序最小的排列.并且要求序列 T 为所求排列的子序列.题目保证这样的排列一定存在.
S 是 T 的子序列,当且仅当 S 是 T 通过删除任意数量元素所得到的.
字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。
这道题有问题吧。题目说的按字典序了,但实际上后台用的是数值排序。
本质是合并两个有序数组。
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int m = input.nextInt(); List<Integer> fix = new ArrayList<>(); List<Integer> free = new ArrayList<>(); boolean[] v = new boolean[n + 1]; for (int i = 0; i < m; i++) { int tmp = input.nextInt(); v[tmp] = true; fix.add(tmp); } for (int i = 1; i <= n; i++) if (!v[i]) free.add(i); //Collections.sort(fix); //Collections.sort(free); int i = 0; int j = 0; //String sm = ""; List<Integer> ans = new ArrayList<>(); while (i < free.size() && j < fix.size()) { //String s1 = sm + free.get(i); //String s2 = sm + fix.get(j); if (free.get(i) <= fix.get(j)) { ans.add(free.get(i++)); //sm = s1; } else { ans.add(fix.get(j++)); //sm = s2; } } while (i < free.size()) { ans.add(free.get(i++)); } while (j < fix.size()) { ans.add(fix.get(j++)); } for (i = 0; i < n; i++) { if (i == 0) System.out.print(ans.get(i)); else System.out.print(" " + ans.get(i)); } System.out.println(); } }
2021-03-09 20:11:01 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com
区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站部分资料来自网络,侵权联系删除!资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定长度为 m 的序列 T ,求一个长度为 n 且字典序最小的排列.并且要求序列 T 为所求排列的子序列.题目保证这样的排列一定存在. S 是 T 的子序列,当且仅当 S 是 T 通过删除任意数量元素所得到的. 字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。-笔试面试资料
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定长度为 m 的序列 T ,求一个长度为 n 且字典序最小的排列.并且要求序列 T 为所求排列的子序列.题目保证这样的排列一定存在. S 是 T 的子序列,当且仅当 S 是 T 通过删除任意数量元素所得到的. 字典序是单词在字典中的排列顺序,先比较第一个字母,然后比较第二个字母,依次类推。-笔试面试资料