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

做一个电子商城网站建设方案网页美工设计的要点

做一个电子商城网站建设方案,网页美工设计的要点,页面 访问 每天 正常 欢迎,电子印章在线制作生成器免费某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。 返回结果 无顺序要求,但不能含有重复的元素。 示例 1: 输入:goods "agew" 输出:[&…

某店铺将用于组成套餐的商品记作字符串 goods,其中 goods[i] 表示对应商品。请返回该套餐内所含商品的 全部排列方式 。

返回结果 无顺序要求,但不能含有重复的元素。

示例 1:

输入:goods = "agew"
输出:["aegw","aewg","agew","agwe","aweg","awge","eagw","eawg","egaw","egwa","ewag","ewga","gaew","gawe","geaw","gewa","gwae","gwea","waeg","wage","weag","wega","wgae","wgea"]

LCR 157. 套餐内商品的排列顺序 - 力扣(LeetCode)

很经典的回溯题目

我们回顾一下回溯三部曲:

void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果}
}

第一次写的时候忘记去掉重复元素了,但是回溯基本上是对的,没有加剪枝:

class Solution {public String[] goodsOrder(String goods) {if(goods == null){return new String[0];}ArrayList<String> results = new ArrayList<>();StringBuilder result = new StringBuilder();backtracing(result,goods,results);return results.toArray(new String[0]);}public void backtracing(StringBuilder result, String goods, ArrayList<String> results){if(result.length() == goods.length()){results.add(result.toString());return;}for(int i = 0; i < goods.length(); i++){result = result.append(goods.charAt(i));backtracing(result,goods,results);result = result.deleteCharAt(result.length() - 1);}}
}

使用HashSet,并使用used数组记录该元素是否被使用过:

class Solution {public String[] goodsOrder(String goods) {if(goods == null){return new String[0];}HashSet<String> results = new HashSet<>();StringBuilder result = new StringBuilder();boolean[] used = new boolean[goods.length()]; // 记录字符是否被使用过backtracing(result,goods,results,used);return results.toArray(new String[0]);}public void backtracing(StringBuilder result, String goods, HashSet<String> results,boolean[] used){if(result.length() == goods.length()){results.add(result.toString());return;}for(int i = 0; i < goods.length(); i++){if (used[i]) {continue;}used[i] = true;result = result.append(goods.charAt(i));backtracing(result,goods,results,used);result = result.deleteCharAt(result.length() - 1);used[i] = false;}}
}

其实还有一个问题,像刚才上面的算法,如果是abb这样的字符串,其实是会产生两个abb的,但是我们用HashSet过滤掉了。但是这样会导致算法性能不太好。应该加上这样一个条件判断更合适:

if (i > 0 && goods.charAt(i) == goods.charAt(i - 1) && !used[i - 1]) {continue;
}

如果当前字符等于上一个字符并且上一个字符没有被使用过,那么就跳过。

但是好像在力扣里加不加这个算法性能没太大区别。

http://www.dtcms.com/a/405002.html

相关文章:

  • 搞一个网站多少钱网站建设实训报告2000字
  • 网站和管理系统的区别企业cms开源
  • 住房和城乡建设部干部学院网站湖南网站制作方案
  • 通辽网站制作公司grace+wordpress
  • seo网站推广工作内容wordpress主题花园
  • wordpress广告最后加载网站优化建设方案
  • 比较出名做耐克的网站免费的软件开发工具
  • 想做网站怎么做甜品制作网站
  • 网站开发 安全 承诺书国外网站购物
  • 济南网站seo顾问建设文化网站的目的和意义
  • 嘉兴网站关键词优化网站开发经理岗位职责
  • 福州集团网站建设那个免费做微信订阅号的网站
  • 如何做话费卡回收网站德州做网站优化
  • 如何查询网站是否备案影楼公共网站
  • 昆山市住房和建设局网站网页传奇合击
  • 头条网站收录提交入口wordpress横排菜单
  • 企业为什么要建站点呢wordpress有没有linux
  • 宁波网站推广专业服务区校合作网站建设方案
  • 网络工程师证书考取条件长沙seo优化哪家好
  • 开通微网站杭州设计师网站
  • 备案网站应用服务青岛做公司网站
  • 藤虎广州网站建设检测设备技术支持东莞网站建设
  • 服饰的网站建设品牌营销策略案例
  • 免费 成品模板网站怎么提高网站建设水平
  • 你做我评网站会自动查论文相似度吗沈阳专业网站建设企业
  • windows搭建网站开发大连旅游网站建设大概多钱
  • 阿里巴巴国际站运营模式凡科代理建站登录
  • 赣州网站建设信息百度app下载官方免费下载最新版
  • 如何一个空间做多个网站上海关键词优化报价
  • 花都商城网站建设怎么将自己房子投入网站做民宿