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

贪心算法day 06

1.最长回文串

链接:. - 力扣(LeetCode)

思路:计算每个字符个数如果是偶数个那么肯定可以组成回文串,如果是奇数个就会有一个无法组成回文串,但是在最中间还是可以有一个不是成队的字符这个字符就从多的奇数中随机取一个就好。这里使用模拟hash的方式来实现每个字符的计数。 

代码:

 public static int longestPalindrome1(String s) {int n = s.length();int[] hash = new int[127];//如何将字符串转化成字符串数组? 如何统计每个字符串的对应个数for (int i = 0; i < n; i++) {hash[s.charAt(i)]++;}int ret = 0;for(int x:hash){ret += x / 2 * 2;}return ret < s.length() ? ret + 1 : ret ;} 

 2.增减字符串匹配

链接:. - 力扣(LeetCode)

思路: 代码:

class Solution {public static int[] diStringMatch(String s) {int n = s.length();int left = 0,right = n;int[] ret = new int[n + 1];for (int i = 0; i < n; i++) {ret[i] = i;}for (int i = 0; i < n; i++) {if(s.charAt(i) == 'I' ){ret[i] = left++;}else{ret[i] = right--;}}ret[n] = left;return ret;}
}

3.分发饼干

题目链接:. - 力扣(LeetCode)

解题思路:与田径赛马差不多的思路

代码:

  public static int findContentChildren(int[] g, int[] s) {Arrays.sort(g);//胃口大小Arrays.sort(s);//饼干尺寸int m = g.length, n = s.length,ret = 0;// 两个指针同时遍历不是分开两层遍历for(int i = 0,j = 0;i < m && j < n ; i++,j++){while(j < n && s[j] < g[i])j++;if(j < n) ret++;}return ret;}

http://www.lryc.cn/news/484055.html

相关文章:

  • HTML之列表学习记录
  • Redo与Undo的区别:数据库事务的恢复与撤销机制
  • 【话题讨论】AI赋能电商:创新应用与销售效率的双轮驱动
  • 重构开发之道,Blackbox.AI为技术注入智能新动力
  • 机器学习在医疗健康领域的应用
  • M芯片Mac构建Dockerfile - 注意事项
  • 系统架构设计师论文
  • 速盾:CDN 和高防有什么区别?
  • goframe开发一个企业网站 rabbitmq队例15
  • 设计模式-七个基本原则之一-迪米特法则 + 案例
  • 【数学二】线性代数-二次型
  • 320页PDF | 集团IT蓝图总体规划报告-德勤(限免下载)
  • HTB:Sea[WriteUP]
  • Java 网络编程(一)—— UDP数据报套接字编程
  • ECharts图表图例8
  • Redis中的线程模型
  • [产品管理-77]:技术人需要了解的常见概念:科学、技术、技能、产品、市场、商业模式、运营
  • 鼠标点击(一)与3D视口窗口的交互
  • 线程-2-线程概念与控制
  • TortoiseSVN提示服务器凭证检核错误:站点名称不符
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • (动画版)排序算法 -希尔排序
  • delphi fmx android 自动更新(二)
  • 蓝队知识浅谈(中)
  • 解决vue3+ts打包项目时会生成map文件
  • webpack指南
  • 关于QUERY_ALL_PACKAGES权限导致Google下架apk
  • 优化时钟网络之时钟抖动
  • C++《继承》
  • 微澜:用 OceanBase 搭建基于知识图谱的实时资讯流的应用实践