当前位置: 首页 > wzjs >正文

中国建筑官网站国外网站加速

中国建筑官网站,国外网站加速,wordpress百度经验,艺术设计有限公司给定一个数字字符串S和一个数组nums,数组中的元素都在0~9之间,问从数组中选择元素组成的数字,小于N的最大值是多少? 例如:S “24378”,nums:{2,3,9},组成的最大值为23999。 👨‍&am…

给定一个数字字符串S和一个数组nums,数组中的元素都在0~9之间,问从数组中选择元素组成的数字,小于N的最大值是多少?
例如:S = “24378”,nums:{2,3,9},组成的最大值为23999。

👨‍🏫 参考视频

import java.util.Arrays;public class Main {public static void main(String[] args) {/*示例 1:A={1, 2, 9, 4},n=2533,返回 2499。示例 2:A={1, 2, 5, 4},n=2543,返回 2542。示例 3:A={1, 2, 5, 4},n=2541,返回 2525。示例 4:A={1, 2, 9, 4},n=2111,返回 1999。示例 5:A={5, 9},n=5555,返回 999。*/// 示例1int[] a1 = {1, 2, 9, 4};int[] n1 = {2, 5, 3, 3};System.out.println("示例1:" + getMaxLessNum(a1, n1) + " (应返回2499)");// 示例2int[] a2 = {1, 2, 5, 4};int[] n2 = {2, 5, 4, 3};System.out.println("示例2:" + getMaxLessNum(a2, n2) + " (应返回2542)");// 示例3int[] a3 = {1, 2, 5, 4};int[] n3 = {2, 5, 4, 1};System.out.println("示例3:" + getMaxLessNum(a3, n3) + " (应返回2525)");// 示例4int[] a4 = {1, 2, 9, 4};int[] n4 = {2, 1, 1, 1};System.out.println("示例4:" + getMaxLessNum(a4, n4) + " (应返回1999)");// 示例5int[] a5 = {5, 9};int[] n5 = {5, 5, 5, 5};System.out.println("示例5:" + getMaxLessNum(a5, n5) + " (应返回999)");}/*** 获取由数组nums中的元素组成的数字,且小于n的最大值* @param nums 数组中的元素都在0~9之间* @param n 目标数字数组* @return 由nums中的元素组成的数字,且小于n的最大值*/public static String getMaxLessNum(int[] nums, int[] n) {// 对nums数组进行排序,方便后续查找最大值Arrays.sort(nums);// 用于存储结果数字的字符串StringBuilder s = new StringBuilder();// 深度优先搜索,寻找最大值dfs(true, s, nums, n, 0);return s.toString();}/*** 深度优先搜索,寻找最大值* @param equal 当前位是否与目标数字相等* @param s 用于存储结果数字的字符串* @param nums 数组中的元素都在0~9之间* @param n 目标数字数组* @param index 当前处理的位索引* @return 是否找到符合条件的数字*/private static boolean dfs(boolean equal, StringBuilder s, int[] nums, int[] n, int index) {// 如果是最后一位,则需要判定是否有小于n的数if (index == n.length - 1) {if (!equal) {// 如果前面已经有不相等的位,则直接取nums的最大值s.append(nums[nums.length - 1]);return true;} else {// 否则需要寻找小于n最后一位的最大值for (int i = nums.length - 1; i >= 0; i--) {if (nums[i] < n[n.length - 1]) {s.append(nums[i]);return true;}}return false;}}// 前面有不相等的,后面都取nums的最大值即可if (!equal) {for (int i = index; i < n.length; i++) {s.append(nums[nums.length - 1]);}return true;}// 前面都相等,优先取和n[index]相同的值,深度优先遍历,如果后面组成的数小于n,则找到了最大的值。如果当前值小于n[index],则后面都取nums的最大值即可for (int i = nums.length - 1; i >= 0; i--) {if (nums[i] == n[index]) {s.append(nums[i]);boolean result = dfs(true, s, nums, n, index + 1);if (result) {return true;} else {s.deleteCharAt(s.length() - 1); // 回溯,删除最后一个字符}}if (nums[i] < n[index]) {s.append(nums[i]);dfs(false, s, nums, n, index + 1); // 后续位都取最大值return true;}}// 如果前面都不满足,删除第一位即可if (index == 0) {dfs(false, s, nums, n, index + 1);return true;}return false;}
}

👨‍🏫 参考博客

http://www.dtcms.com/wzjs/263107.html

相关文章:

  • 0基础学网站开发苏州网络公司
  • 那个大学业做网站怎么看百度指数
  • 个人做信息分类网站需备案吗seo如何优化的
  • 搜索网站不显示图片百度竞价推广账户
  • 微信视频网站怎么做的网络销售是什么
  • 织梦dedecms网站更换域名后文章图片路径批量修改长沙seo代理商
  • 室内设计网站建设软文范例300字
  • 江干网站建设最新营销模式
  • 九江网站建设公司山西seo推广
  • 无代码开发原理外贸网站如何推广优化
  • 推荐一个简单的网站制作成都网络推广运营公司
  • 微信开发公司衡水网站seo
  • 资源下载网站wordpress推广自己产品的文案
  • 怎么做网站分站百度的竞价排名是哪种方式
  • 秦皇岛网站制作人才招聘西安百度百科
  • 做淘宝客网站制作教程视频教程最有效的宣传方式
  • 广州市人民政府发布新闻西安seo优化排名
  • 响应式网站自助香飘飘奶茶软文
  • 什么软件可以做动画视频网站百度资源搜索平台官网
  • 淘宝做导航网站郑州高端网站建设哪家好
  • 软件制作权seo快速收录快速排名
  • 企业网站创建小结网络搜索工具
  • 产品推广营销方案搜索引擎优化缩写
  • 公众号可以做网站维护链接吗百度云网盘网页版登录
  • 网站建设分工明细表精准客源
  • 网站改版 理论nba录像回放
  • 海淀教育互动平台seo资源
  • 做外贸的网站主要有哪些新媒体运营培训班
  • 做网站 带宽 多少钱朝阳seo推广
  • 青岛专业做网站的公司有哪些外贸企业网站制作哪家好