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

贪心算法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.kler.cn/a/394641.html

相关文章:

  • 深度学习中的参数初始化
  • Element Plus 日期时间选择器大于当天时间置灰
  • 119.【C语言】数据结构之快速排序(调用库函数)
  • Windows Powershell实战指南(未完成)
  • blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质
  • 中间件xxl-job安装
  • Docker 中启动 NGINX 并配置 HTTPS 443 端口
  • 如何用Java爬虫“偷窥”淘宝商品类目API的返回值
  • Linux学习,ip 命令
  • 介绍一下位操作符(c基础)
  • python调用MySql详细步骤
  • 【干货】仓储管理SOP标准化操作!
  • torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息
  • Android Camera系列(六):MediaCodec视频编码上-编码YUV
  • Asp.NET Core Mvc中一个视图怎么设置多个强数据类型
  • PyQt入门指南五十二 版本控制与协作开发
  • Linux git-bash配置
  • 《深度学习》AlexNet网络
  • 11.14日志
  • vue中重置对象的好使方式(封装好的函数,可直接食用)
  • MATLAB中round函数用法
  • 用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)
  • 工程化实战内功修炼测试题
  • 深度学习笔记14-卷积神经网络2
  • C语言实现3D动态爱心图形的绘制与动画效果
  • 抖音小程序蓝海冷门玩法,前期搭建好后期自动变现模式解析!