当前位置: 首页 > 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

相关文章:

  • STM32中,不进行printf改写通过函数达到同款效果
  • 初级数据结构——栈
  • IC 脚本之python
  • MySQL —— MySQL逻辑架构与查询过程
  • Vector 深度复制记录
  • PostgreSQL分区表:基础语法与运维实践
  • 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动态爱心图形的绘制与动画效果
  • 抖音小程序蓝海冷门玩法,前期搭建好后期自动变现模式解析!