Java算法 leetcode简单刷题记录10

Java算法 leetcode简单刷题记录10

庆祝一下:大概花费了9天,我把所有leetcode Java 的简单题都刷完了,接下来开始冲刺中等和复杂;

简单题里用到的比较多的是字符串的处理,转换,拆分,替换,PriorityQueue 依次输出最大最小值;走楼梯等动态规划;

  • charAt
  • startsWith
  • toLowerCase()
  • replaceAll
  • split
  • indexOf
  • 进制转换: Integer.valueOf(“0xff”,16); 十六进制转十进制
  • Integer.valueOf(“0101”,2); 二进制转十进制
  • 十进制转二进制 Integer.toBinaryString(10)
  • split 特殊字符拆分需要加 “\”+“.”
  • char转int int a = (int)(‘9’-‘0’); 或者 int a = (int)(str.charAt(0)-‘0’);

PriorityQueue每次弹出队列里剩下的值中的最大值,最小值;

class Solution {public long pickGifts(int[] gifts, int k) {// 保证每次队列弹出最大值PriorityQueue<Integer> queue = new PriorityQueue<Integer>((obj1, obj2) -> {return obj2 - obj1;});// 每次弹出最小值/** PriorityQueue<Integer> queue = new PriorityQueue<Integer>((obj1, obj2) -> {return obj1 - obj2;});**/for (int gift : gifts) {queue.add(gift);}int i = 0;while (i < k && queue.size() > 0) {int q = queue.poll();queue.add((int) Math.sqrt(q));i++;}long sum = 0;while (queue.size() > 0) {sum += queue.poll();}return sum;}
}
  1. 一周中的第几天: https://leetcode.cn/problems/day-of-the-week/
    这是第2遍写这道题,稍微有些不一样,之前是告诉1970.1.1 是星期四,问 days后是哪个日期及星期几?
    这道题是已知1970.1.1 是星期四,问某个日期假如2023.11.20是星期几?
    俩道题知识点一致,需要计算1970.1.1到该日期经过了多少年,月,日,总天数,然后求星期。
class Solution {public String dayOfTheWeek(int day, int month, int year) {int[] months = new int[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };String[] weeks = new String[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };int year0 = 1970;int week0 = 3;int month0 = 1;int sum = 0;while (year0 < year) {int days = 365;if (isRunYear(year0)) {days = 366;}System.out.println(year0 + " " + " " + days + " " + sum);sum += days;year0++;}for (int i = 1; i < month; i++) {int days = months[i];if (isRunYear(year0) && i == 2) {days = 29;}// System.out.println(year0 + " " + i + " " + days + " " + sum);sum += days;}// System.out.println(" days: " + day + " " + sum);sum += day - 1; // 当前天占一天,也不算进去;if (year > 1970) {sum -= 1; // 1970一整年中365天,起始日元旦算1天,所以要减掉;}// 假设法,假设距离只有3天,则为周四周五周六,否则mod 7求余;int n = sum > 3 ? (sum - 3) % 7 : sum + week0;// System.out.println(n);return weeks[n];}public boolean isRunYear(int year) {if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {return true;}return false;}
}
  1. 一年中的第几天: https://leetcode.cn/problems/day-of-the-year/
    判断闰月即可:整除4不被100整除,或者整除400

  2. 赎金信: https://leetcode.cn/problems/ransom-note/
    字符串处理,
    charAt
    replaceAll

  3. 按分隔符拆分字符串: https://leetcode.cn/problems/split-strings-by-separator/
    特殊字符,直接split会不起作用,需要用 \+"."等

class Solution {public List<String> splitWordsBySeparator(List<String> words, char separator) {List<String> res = new ArrayList<>();for (String str : words) {res.addAll(Arrays.asList(str.split("\\" + String.valueOf(separator))).stream().filter(x -> {return x.length() != 0;}).collect(Collectors.toList()));}return res;}
}
  1. 最长交替子数组: https://leetcode.cn/problems/longest-alternating-subarray/
    看着比较简单,还是需要把情况都考虑仔细,改改改才能通过所有的case…
class Solution {public int alternatingSubarray(int[] nums) {if (nums.length < 1) {return -1;}int res = -1;for (int i = 0; i < nums.length - 1; i++) {int cnt = -1;for (int j = i + 1; j < nums.length; j++) {if (cnt == -1 && nums[j - 1] + 1 == nums[j]) {cnt = 2;continue;}System.out.println(j + " " + nums[j - 1] + " " + nums[j]);if (nums[j - 1] + 1 == nums[j] || nums[j - 1] - 1 == nums[j]) {if (j >= 2) {if (nums[j] == nums[j - 2]) {cnt++;} else {break;}}} else {break;}}// System.out.println("----else " + j + " " + cnt);res = Math.max(res, cnt);cnt = -1;}return res;}
}
  1. 计算 K 置位下标对应元素的和: https://leetcode.cn/problems/sum-of-values-at-indices-with-k-set-bits/
    replaceAll & int转2进制值:Integer.toBinaryString();

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

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

相关文章

【LeetCode: Z 字形变换 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Redis学习——高级篇②

Redis学习——高级篇② Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKey案例2.BigKey案例2.1 多大算 BigKey以及它的危害2.2 如何产生、发现、删除 3. bigKey生产调优 Redis7高级之BigKey&#xff08;二&#xff09; 1.MoreKe…

【高效开发工具系列】Java读取Html

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Linux系统安装Nginx

一、Nginx的简介 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;是由伊戈尔赛索耶夫为俄罗斯访问量第二站点开发的&#xff0c;因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名&#xff0c;第一个公开版本0.1.0发布于2004年10月4日。 Nginx是一…

C# RichTextBox常用属性、方法学习1

1 字体 Font font1 new Font("宋体", 18); richTextBox1.Font font1; Font font2 new Font("宋体", 10, FontStyle.Underline); richTextBox1.SelectionFont font2; 定义字体&#xff0c;可以带2个参数&#…

LeetCode---122双周赛

题目列表 3010. 将数组分成最小总代价的子数组 I 3011. 判断一个数组是否可以变为有序 3012. 通过操作使数组长度最小 3013. 将数组分成最小总代价的子数组 II 一、将数组分成最小总代价的子数组I 这道题纯纯阅读理解题&#xff0c;关键在于理解题意。注意&#xff1a;第一…

总体方差与样本方差的区别是什么?

总体方差和样本方差是统计学中两个重要概念&#xff0c;它们在定义和计算上有所不同&#xff0c;主要区别体现在数据集的性质和计算公式的分母上&#xff1a; 1. 总体方差&#xff08;Population Variance&#xff09;&#xff1a; 定义&#xff1a; 总体方差是指将一个完整数…

嵌入式——窗口看门狗(WWDG)补充

目录 一、独立看门狗与窗口看门狗 1.功能描述 2.两者区别 二、WWDG功能描述 1.窗口看门狗时钟 2.计数器时钟 3. 计数器 4.窗口值 三、WWDG超时时间 一、独立看门狗与窗口看门狗 1.功能描述 STM32有两个看门狗&#xff1a;一个是独立看门狗&#xff08;IWDG&#xff0…

在知乎上如何写科技文章?

当在知乎上撰写关于科技趋势的文章时&#xff0c;有几个关键的写作技巧和建议可以帮助你获得更好的传播效果&#xff1a; 选题关注热点&#xff1a; 在选择科技趋势时&#xff0c;关注当前的热点话题是很重要的。了解最新的技术、行业动向&#xff0c;选择用户普遍关心和讨论的…

数据结构三:线性表之单链表(带头结点单向)的设计与实现

线性表的链式存储结构正是所谓的单链表&#xff0c;何谓单链表&#xff1f;通过地址将每一个数据元素串起来&#xff0c;进行使用&#xff0c;这可以弥补顺序表在进行任意位置的插入和删除需要进行大量的数据元素移动的缺点&#xff0c;只需要修改指针的指向即可&#xff1b;单…

网络编程套接字(2)

UDP数据报套接字编程 API介绍 DatagramSocket DatagramSocket是UDP的Socket,用于发送和接收数据报. 操作系统中有一类文件,就叫做socket文件(普通文件/目录文件:在硬盘上的) socket文件:抽象的表示了网卡这样的硬件设备 DatagramSocket就是对socket文件进行读写,也就是借助网…

对于gzip的了解

gzip基本操作原理&#xff1a;通过消除文件中的冗余信息&#xff0c;使用哈夫曼编码等算法&#xff0c;将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用&#xff0c;减小了传输数据的大小&#xff0c;从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…

WordPress如何使用SQL实现一键关闭/开启评论功能(已有评论)

WordPress本人就自带评论功能&#xff0c;不过由于种种原因&#xff0c;有些站长不想开启评论功能&#xff0c;那么应该怎么实现一键关闭评论功能或开启评论功能呢&#xff1f;或者针对已有评论功能的文章进行一键关闭或开启评论功能应该怎么操作&#xff1f; 如果你使用的Wor…

【.NET Core】深入理解C#中的特殊字符

【.NET Core】深入理解C#中的特殊字符 文章目录 【.NET Core】深入理解C#中的特殊字符一、概述二、$-- 字符串内插2.1 内插字符串的结构2.2 内插原始字符串字面量2.3 特殊字符2.4 内插字符串编译 三、-- 逐字字符串标识符四、“”“--原始字符串文本 一、概述 特殊字符是预定义…

【网易】资深Java开发工程师/专家(采购系统方向)

全职 | 杭州市 | 2024-01-26 更新 职位描述 负责企业信息化采购系统研发。重点关注系统并发性能、可靠性等方面&#xff0c;解决系统技术难点&#xff0c;参与架构持续升级。关注互联网和企业信息化热点技术的发展方向&#xff0c;能够提出、评估并应用新技术。参与系统需求分…

OpenGL/C++_学习笔记(四)空间概念与摄像头

汇总页 上一篇: OpenGL/C_学习笔记&#xff08;三&#xff09; 绘制第一个图形 OpenGL/C_学习笔记&#xff08;四&#xff09;空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头 前置科技树: 线性代数 矩阵/向量定…

嵌入式产品的开发流程

嵌入式产品的开发流程主要涉及硬件和软件两个方面&#xff0c;通常包括以下主要阶段和角色&#xff1a; 嵌入式产品开发流程 1. 需求分析阶段&#xff1a; 角色&#xff1a; 产品经理、系统工程师 任务&#xff1a; 确定产品的功能和性能需求&#xff0c;明确硬件和软件的基…

RPC教程 5.支持HTTP协议

1.HTTP的CONNECT方法 Web 开发中&#xff0c;我们经常使用 HTTP 协议中的 HEAD、GET、POST 等方式发送请求&#xff0c;等待响应。但 RPC 的消息格式与标准的 HTTP 协议并不兼容&#xff0c;在这种情况下&#xff0c;就需要一个协议的转换过程。HTTP 协议的 CONNECT 方法提供了…

在Java中,IO主要分为两种:同步阻塞IO(BIO)和NIO(New IO,也称为Non-blocking IO)。

IO&#xff08;Input/Output&#xff09;是指输入和输出&#xff0c;是程序与外部世界或者程序与程序之间进行数据交换的一种方式。在Java中&#xff0c;IO主要分为两种&#xff1a;同步阻塞IO&#xff08;BIO&#xff09;和NIO&#xff08;New IO&#xff0c;也称为Non-blocki…

51单片机-4G模块

51单片机-4G模块 4G控制LED #include "reg52.h" #include "intrins.h" #include <string.h>#define SIZE 12 sfr AUXR 0x8E; sbit D5 P3^7; char cmd[SIZE];void UartInit(void) //9600bps11.0592MHz {AUXR 0x01;SCON 0x50; //配置串口工作方…