数据结构算法leetcode刷题练习(1)

news2024/11/18 13:44:58

给定一个三角形 triangle ,找出自顶向下的最小路径和。

每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。

示例 1:

输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
输出:11
解释:如下面简图所示:
   2
  3 4
 6 5 7
4 1 8 3
自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。
示例 2:

输入:triangle = [[-10]]
输出:-10
 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/triangle

动态规划解决

  //dp[i][j]表示第i层第j列从上到下的最小和,i和j从0开始
public int minimumTotal(List<List<Integer>> triangle) {
        int[][] dp=new int[triangle.size()][triangle.get(triangle.size()-1).size()];
        dp[0][0]=triangle.get(0).get(0);
        for(int i=1;i<dp.length;i++){
            for(int j=0;j<triangle.get(i).size();j++){
                if(j==0)
                    dp[i][j]=dp[i-1][j]+triangle.get(i).get(j);
                else if(j==i)
                    dp[i][j]=dp[i-1][j-1]+triangle.get(i).get(j);
                else
                    dp[i][j]=Math.min(dp[i-1][j]+triangle.get(i).get(j),dp[i-1][j-1]+triangle.get(i).get(j));
            }
        }
        int min=Integer.MAX_VALUE;
        for(int i=0;i<dp[dp.length-1].length;i++){
            if(dp[dp.length-1][i]<min)
                min=dp[dp.length-1][i];
        }
        return min;
    }

在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。


输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:4

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximal-square
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

此题粘贴官方题解

 代码省略

131. 分割回文串

难度中等1469收藏分享切换为英文接收动态反馈

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]

利用回溯算法解决

  public List<List<String>> partition(String s) {
        List<List<String>> lists=new ArrayList<>();
        if(s==null||s.equals(""))
            return lists;
        ArrayList<String> list=new ArrayList<>();
        backtreeing(s,0,list,lists);
        return lists;
    }
    public static void backtreeing(String s,int start,List<String> list,List<List<String>> lists){
        if(start==s.length()){
            lists.add(new ArrayList<>(list));
            return;
        }

        for(int i=start;i<s.length();i++){
            String substring = s.substring(start, i + 1);
            if(huiwen(substring)) {
                StringBuilder stringBuilder = new StringBuilder();
                String s1 = stringBuilder.append(substring).toString();
                list.add(s1);
                backtreeing(s,i+1,list,lists);
                list.remove(list.size()-1);
            }
        }

    }
    public static boolean huiwen(String s){
        StringBuilder stringBuilder=new StringBuilder(s);
        if(s.equals(stringBuilder.reverse().toString()))
            return true;
        else
            return false;
    }

 

395. 至少有 K 个重复字符的最长子串

难度中等811收藏分享切换为英文接收动态反馈

给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。

示例 1:

输入:s = "aaabb", k = 3
输出:3
解释:最长子串为 "aaa" ,其中 'a' 重复了 3 次。

示例 2:

输入:s = "ababbc", k = 2
输出:5
解释:最长子串为 "ababb" ,其中 'a' 重复了 2 次, 'b' 重复了 3 次。

 此题采用滑动窗口未解决问题,故参考题解力扣

class Solution {
    public int longestSubstring(String s, int k) {
        if (s.length() < k) return 0;
        HashMap<Character, Integer> counter = new HashMap();
        for (int i = 0; i < s.length(); i++) {
            counter.put(s.charAt(i), counter.getOrDefault(s.charAt(i), 0) + 1);
        }
        for (char c : counter.keySet()) {
            if (counter.get(c) < k) {
                int res = 0;
                for (String t : s.split(String.valueOf(c))) {
                    res = Math.max(res, longestSubstring(t, k));
                }
                return res;
            }
        }
        return s.length();
    }
}

作者:fuxuemingzhu
链接:https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/solution/jie-ben-ti-bang-zhu-da-jia-li-jie-di-gui-obla/
来源:力扣(LeetCode)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4.2 插值多项式的求法

学习目标&#xff1a; 我会采取以下几个步骤来学习插值多项式的求法&#xff1a; 学习预备知识&#xff1a;插值多项式的求法需要掌握一定的数学知识&#xff0c;例如多项式函数的定义、导数、微积分、线性代数等等。因此&#xff0c;学习插值多项式的求法前&#xff0c;需要先…

掘金AIGC时代,开发者更需要什么样的大模型?

当前&#xff0c;火热的AI大模型领域需要一些冷思考。 自去年年底ChatGPT掀起一轮AIGC热潮以来&#xff0c;国内科技企业扎堆发布大模型和类ChatGPT产品。截止2023年4月&#xff0c;已公开宣布发布或即将发布AI大模型的企业达数十家。多模态大模型的能力不断迭代&#xff0c;市…

2023年自动化测试真有那么重要吗?内卷严重,测试技能水涨船高......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 学习自动化测试有…

应用现代化语境下的技术重塑:谁在帮助企业自我革命?

文丨智能相对论 作者丨沈浪 在数字经济时代&#xff0c;应用现代化正在成为一个共识。在IDC发布的《IDC FutureScape&#xff1a;全球云计算2022年预测-中国启示》报告中&#xff0c;应用现代化就位居首位。同时&#xff0c;IDC也预测&#xff0c;到2025年&#xff0c;数字经…

更新 WinForms | InitializeComponent 的现代代码生成

当你使用 Visual Studio 中的 WinForms Designer 来创建一个 WinForms 表单或用户控件时&#xff0c;它并没有像 XML 或 HTML 那样的特殊定义或文件格式来表示用户界面。从一开始&#xff0c;WinForms 使用的唯一格式就是程序代码。在 WinForms Visual Basic 项目中定义的表单或…

ONES 联合中国信通院发布《中国企业软件研发管理白皮书》

4月20日&#xff0c;由 ONES 与中国信通院联合发起的《中国企业软件研发管理白皮书》发布会暨「软件质效沙龙一北京站」正式举行。发布会上&#xff0c;ONES 与中国信通院云计算与大数据研究所的各位领导、行业专家及众多软件从业者一起&#xff0c;聚焦研发管理热点动态&#…

【hello C++】内存管理

目录 前言&#xff1a; 1. C/C内存分布 2. C语言动态内存管理方式 3. C内存管理方式 3.1 new / delete 操作内置类型 3.2 new和delete操作自定义类型 4. operator new与operator delete函数 4.1 operator new与operator delete函数 5. new和delete的实现原理 5.1 内置类型 5.2…

杭州乐芯CNC 机器人采集方法汇总

杭州乐芯CNC数据采集方法及支持的系统 一&#xff0c;杭州乐芯CNC 机器人采集方法汇总 1&#xff0c;采用SDK开发包采集&#xff0c;比如发那科 FANUC \三菱 、海德汉、大隈OKUMA&#xff08;O-API&#xff09;、华中数控、凯恩帝、沙迪克、牧野电火花、台湾宝元、上海来钠克…

怎么把avi文件转换成mp4视频格式,4个高能方法

怎么把avi文件转换成mp4视频格式&#xff1f; 当您下载到avi格式的视频文件时&#xff0c;您可能会选择将其转换为MP4格式的文件。 avi是一种由微软开发的多媒体容器格式&#xff0c;尽管现在已经被认为是老旧的技术&#xff0c;但由于其简单易懂的开发API和Windows的通用性&am…

【CSS3】CSS3 2D 转换 - rotate 旋转 ② ( 使用 rotate 旋转绘制三角形 )

文章目录 一、使用 rotate 旋转绘制三角形二、代码示例 一、使用 rotate 旋转绘制三角形 使用 rotate 旋转绘制三角形 的原理 : 先绘制正方形 , 为该正方形设置边框 , 只设置 右侧 和 下方的 边框 , div {width: 40px;height: 40px;border-right: 2px solid black;border-bott…

tmux---linux终端复用器使用

tmux---linux终端复用器使用 tmux 介绍安装使用tmux会话管理新建会话分离会话接入会话杀死会话切换会话重命名会话 窗格操作划分窗格移动光标交换窗格位置窗格快捷键 tmux 介绍 命令行的典型使用方式是&#xff0c;打开一个终端窗口&#xff08;terminal window&#xff0c;以…

发令枪音效芯片,语音提示ic

发令枪属于管制物品&#xff0c;只能在运动员训练或比赛时使用&#xff0c;其余时间段不能使用&#xff0c;更不能在非比赛场地公众场合使用。在径赛、游泳比赛等开始时&#xff0c;主要是用来发出声音信号的器械&#xff0c;形状像手枪。 电子发令枪&#xff0c;采用电子元器…

Baklib最佳实践:如何设计符合用户需求的FAQ页面?

在当今互联网时代&#xff0c;随着信息量的不断增加和用户信息获取方式的多样化&#xff0c;越来越多的公司、组织和个人开始创建自己的FAQ页面。作为一个企业或组织的“门面”&#xff0c;FAQ页面对于提升品牌形象、提高服务质量以及吸引潜在客户等方面都起着至关重要的作用。…

传统机器学习(三)聚类算法K-means(一)

传统机器学习(三)聚类算法K-means(一) 一、聚类算法K-means初识 1.1 算法概述 K-Means算法是无监督的聚类算法&#xff0c;它实现起来比较简单&#xff0c;聚类效果也不错&#xff0c;因此应用很广泛。K-Means基于欧式距离认为两个目标距离越近&#xff0c;相似度越大。 1.…

详解C语言string.h中常见的14个库函数(二)

本篇博客继续讲解string.h中的库函数。在上一篇博客中&#xff0c;我介绍了strlen, strcpy, strcat, strcmp这4个字符串操作函数&#xff0c;本篇博客会继续介绍strncpy, strncat, strncmp这3个类似的函数。 strcpy, strcat, strcmp这3个函数是长度不受限制的字符串操作函数&a…

ubuntu安装V2board宝塔面板教程

ubuntu安装V2board宝塔面板教程 运行环境:ubuntu-20.04 搭建宝塔web页面环境 切到linux服务器命令行 在用户目录下创建BT目录,进入BT目录 在BT目录下执行命令 sudo wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo sh install.sh…

考虑梯水电站群的水火电节能调度(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

oracle rac 安装文档

oracle rac 安装文档 一、前期准备1.1 操作系统centos 7.4 *2台&#xff0c;要求双网卡1.2 主机名&#xff1a;oracle01&#xff0c;oracle021.3 数据库版本&#xff1a;oracle 11g rac1.4 空间要求&#xff1a;1.4.1 系统&#xff1a;&#xff08;系统使用磁盘&#xff09;1.4…

python基于mediapipe开发构建人体姿态检测系统

之前做的人体姿态检测大都是基于openpose或者是yolo-pose之类的技术框架&#xff0c;这里主要是想基于一个开源的实现来完成人体姿态检测。首先看下效果图&#xff1a; Mediapipe是google的一个开源项目&#xff0c;支持跨平台的常用ML方案。项目在这里&#xff0c;如下所示&am…

软件挖掘|软件缺陷|蜕变关系

目录 软件无处不在 软件发展不是一个简单的任务 识别软件缺陷 软件缺陷定位 使用bug报告识别有缺陷的源代码 使用标准IR方法建模相关性 VSM rVSM 根据bug报告和源代码学习共享主题&#xff0c;并根据主题衡量相关度 学习结合大量手工制作的特性 如何建模&#xf…