IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 每日一题补题记录12 -> 正文阅读

[数据结构与算法]每日一题补题记录12

3.5

521. 最长特殊序列 Ⅰ

给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1 。

「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列) 。

字符串 s 的子序列是在从 s 中删除任意数量的字符后可以获得的字符串。

例如,"abc" 是 "aebdc" 的子序列,因为删除 "aebdc" 中斜体加粗的字符可以得到 "abc" 。 "aebdc" 的子序列还包括 "aebdc" 、 "aeb" 和 "" (空字符串)。

这题目我大概看了一下,很快就明白了如果要分割逐步处理我肯定是做不出来的,所以我很快决定另辟蹊径,想了一会我想明白了,"aebdc" 的子序列还包括 "aebdc"这句话告诉我们一个字符串的最长子序列就是自己,所以我们就可以确定,如果两个字符串长度不等,那么较长者的子序列必然是自己,短者也无法覆盖,返回较长者长度即可。

如果长度相同,分类讨论:

1.字符串完全相同,返回-1

2.只是长度相同,返回相同长度

class Solution {
    public int findLUSlength(String a, String b) {
        int lena=a.length(),lenb=b.length();
        if(lena!=lenb){
            return Math.max(lena, lenb);
        }
        if(lena==lenb){
            if(a.equals(b))return -1;
            return lena;
        }
        return -1;
    }
}

3.6

2100. 适合打劫银行的日子

你和一群强盗准备打劫银行。给你一个下标从 0?开始的整数数组?security?,其中?security[i]?是第 i?天执勤警卫的数量。日子从 0?开始编号。同时给你一个整数?time?。

如果第 i?天满足以下所有条件,我们称它为一个适合打劫银行的日子:

第 i?天前和后都分别至少有 time?天。
第 i?天前连续 time?天警卫数目都是非递增的。
第 i?天后连续 time?天警卫数目都是非递减的。
更正式的,第 i 天是一个合适打劫银行的日子当且仅当:security[i - time] >= security[i - time + 1] >= ... >= security[i] <= ... <= security[i + time - 1] <= security[i + time].

请你返回一个数组,包含 所有 适合打劫银行的日子(下标从 0?开始)。返回的日子可以 任意?顺序排列。

class Solution {
    public List<Integer> goodDaysToRobBank(int[] security, int time) {
        int n=security.length;
        //预处理,记录第i天左边、右边分别连续几天符合条件
        int[]left=new int[n];
        int[]right=new int[n];
        List<Integer>ans=new ArrayList<>();
        //预处理
        for(int i=1;i<n;i++){
            if(security[i]<=security[i-1])left[i]=left[i-1]+1;
            if(security[n-i-1]<=security[n-i])right[n-i-1]=right[n-i]+1;
        }
        //寻找适合打劫的日子
        for(int i=time;i<n-time;i++){
            if(left[i]>=time&&right[i]>=time)ans.add(i);
        }
        return ans;
    }
}

3.7

??????504. 七进制数

给定一个整数?num,将其转化为?7 进制,并以字符串形式输出。

非常easy的进制转换,注意0和正负即可

class Solution {
    public String convertToBase7(int num) {
        if(num==0)return "0";
        StringBuffer sb=new StringBuffer();
        List<Integer>list=new ArrayList<>();
        if(num<0){
            num=-num;
            sb.append("-");
        }
        while(num>0){
            list.add(num%7);
            num/=7;
        }
        for(int i=list.size()-1;i>=0;i--){
            sb.append(list.get(i));
        }
        return sb.toString();
    }
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:47:47  更:2022-03-12 17:48:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:50:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码