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

力扣.H指数力扣.字母异位词力扣.289生命游戏力扣452.用最小数量的箭引爆气球力扣.86分隔链表力扣.轮转数组

目录

^判断是否两边相同

short类型

思维:语义化,借助常量

力扣.H指数

力扣.字母异位词

力扣.289生命游戏

力扣.86分隔链表


^判断是否两边相同

byte一个字节8位

short类型

  • 大小short类型占用2个字节(16位)的内存空间。

int:

  • 大小int类型占用4个字节(32位)的内存空间。

long:8个字节 64位

  •   大小:long类型占用8字节(64位)内存空间

float:32位

double:64位

3.4默认是double类型,不能给float赋值

char的底层是unicode,unicode是包含中文的

&&和&的区别,

&&左边得到结果,不会计算右边

&不论左边如何,都会计算右边

标识符:

字母,数字,下划线,美元符号

首位不能是数字

区分大小写

不能是关键字和保留字、首位不可以是数字,区分大小写

变量,数据类型,运算:变量和常量,标识符,编码规范

三元: ?   :

两个数字n,m

假如交换可以进行n+m,然后操作n-m,m-n之类的操作。

二进制:

对于数据的保存都是采用二进制

规则:0,1

<<左移n位,等价乘以2的n次幂

>>,>>>右移,无符号右移,等价除以2的n次幂a

switch支持的数据类型,int,byte,short,char String,enum

case后面跟常量,必须是唯一常量

switch中break作用的中断,假如不去中断,则后面不会进行判断,而是一直去执行

思维:语义化,借助常量

比如定义男女

使用boolean

开始先用两个常量 

final boolean MAN=true;
final boolean WOMAN=false;

后面定义的时候,就可以比如boolean a=MAN;作为这个语义化

8个小球,一个比较重,其余一样,如何称两次找到重的

分为3,3,2组,把3个,3个两个比较,哪个重,其余就容易

一个5L杯子,一个3L杯子,怎么称4L的水

5L倒满,给3L,此时还剩2L,然后把3L杯子水倒没,把2L给3L水杯,之后,5L加满,给3L直到填满,此时剩4L. 

力扣.H指数

class Solution {public int hIndex(int[] citations) {int h=0;int n=citations.length;Arrays.sort(citations);// 0,0,0,1,2,3,5,6h=0;int i=n-1;while(i>=0&&citations[i]>h){//假如cit[i]当前位置比h大,就说明当前位置至少是H+1次,所以,需要h进行++;h++;i--;}return h;}
}

力扣.字母异位词

这个我思路是不明确的,想到了排序,但是假如我写,肯定没有这么便捷,

他的思路是,不管你什么异位词,我排序之后,你的所有异位词长的都是一个样子,所以我只需要让你所有的都进行排序,拿排序好的那个,作为key,因为假如是异位词,他排序之后的单词应该是一致的,因此这个作为key,然后List来去存储。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>>map=new HashMap<String,List<String>>();for(int i=0;i<strs.length;i++){char[]array=strs[i];Arrays.sort(array);String key=new String(array);//不用判断是否相同,get(获取这个key)假如获取到了就返回,没获取到就new一个,反正这个一定是属于这个字符串的List<String>list=map.getOrDefault(key,new ArrayList<String>);list.add(strs[i]);map.put(key,list);}}
}

力扣.289生命游戏

这个生命游戏是很牛马的一个题目,俺以为他会一直变化,没想到只变化一层,他是一层之后,我们进行第一层,然后根据前面的那些变化,为什么要设置2和-1这俩个状态表示原先死了变活和原先活着变死了,是因为我们更改的同时,需要的是第一波的状态,我们需要得到原先是0还是1,其余就是正常了。

class Solution {public void gameOfLife(int[][] board) {int[] neighbors = {0, 1, -1};int rows = board.length;int cols = board[0].length;// 遍历面板每一个格子里的细胞for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {// 对于每一个细胞统计其八个相邻位置里的活细胞数量int liveNeighbors = 0;for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {
//0,1,-1if (!(neighbors[i] == 0 && neighbors[j] == 0)) {// 相邻位置的坐标int r = (row + neighbors[i]);int c = (col + neighbors[j]);
//这步之前是来统计当前坐标的8个方位,然后把这个点除了本身,全部给处理掉,每个点都统计一下//-1表示过去是活的,现在死了,2表示过去死了,现在活了//r和c要在合法范围内     查看相邻的细胞是否是活细胞if ((r < rows && r >= 0) && (c < cols && c >= 0) && (Math.abs(board[r][c]) == 1)) {liveNeighbors += 1;}}}}// 规则 1 或规则 3 if ((board[row][col] == 1) && (liveNeighbors < 2 || liveNeighbors > 3)) {// -1 代表这个细胞过去是活的现在死了board[row][col] = -1;}// 规则 4if (board[row][col] == 0 && liveNeighbors == 3) {// 2 代表这个细胞过去是死的现在活了board[row][col] = 2;}}}// 遍历 board 得到一次更新后的状态for (int row = 0; row < rows; row++) {for (int col = 0; col < cols; col++) {if (board[row][col] > 0) {board[row][col] = 1;} else {board[row][col] = 0;}}}}
}

力扣.86分隔链表

链表多多利用头节点,要舍得定义变量。

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public  ListNode partition(ListNode head, int x) {ListNode preHead = new ListNode();preHead.next = head;ListNode cur = head;// 4,3,2,5,2    此时没有找到我的preListNode pre = preHead;ListNode key = head;while (cur != null) {if (cur.val >= x) {key = cur;cur = cur.next;break;}pre = cur;cur = cur.next;}//相当于找到了所有比他小的节点的后一个节点,我此时还需一个比他小的节点的前一个节点ListNode Precur=key;//此时比他小的开头节点是pre,比他大的节点是key,我只需要往下找,假如比他小的,插入二者之间即可 1243while (cur != null) {if (cur.val < x) {ListNode next = cur.next;pre.next = cur;cur.next = key;pre = pre.next;Precur.next=next;cur = next;} else {Precur=cur;cur = cur.next;}}return preHead.next;}
}

相关文章:

  • vue vite textarea标签按下Shift+Enter 换行输入,只按Enter则提交的实现思路
  • MRI学习笔记-表征相似性分析(Representational Similarity Analysis, RSA)
  • RNN神经网络
  • 大模型Pre-Training实战解析:实现Qwen3增量预训练
  • Python实现PDB文件预处理
  • LeetCode 404.左叶子之和的递归求解:终止条件与递归逻辑的深度剖析
  • 中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
  • 【竖排繁体识别】如何将竖排繁体图片文字识别转横排繁体,转横排简体导出文本文档,基于WPF和腾讯OCR的实现方案
  • One-shot和Zero-shot的区别以及使用场景
  • 计算机操作系统(十一)调度器/调度程序,闲逛调度与调度算法的评价指标
  • 如何排查服务器 CPU 温度过高的问题并解决?
  • PYTHON训练营DAY29(补)
  • uniapp实现大视频文件上传-- 阿里云oss直传方式 - app、H5、微信小程序
  • SQL语句面试题
  • 整平机:工业制造中的关键设备
  • Chrome 插件网络请求的全面指南
  • Chrome 缓存文件路径
  • 基于B/S架构的质量监督检验报告自动生成管理系统有何亮点?
  • 系统性能分析基本概念(2):性能模型
  • 每日Prompt:像素风格插画
  • 怎么用织梦做本地网站/推广论坛有哪些
  • 网站功能流程图/最新网域查询入口
  • 哪些网站做任务可以赚钱的/市场营销在线课程
  • 网站美工切图是如何做的/使用最佳搜索引擎优化工具
  • 企业网站的建设企业/上海哪家seo公司好
  • 组建个人网站/最近国家新闻