代码随想录-力扣刷题-总结笔记01

  1. 代码随想录:代码随想录
  2. 力扣:力扣 (LeetCode) 全球极客挚爱的技术成长平台

 

目录

01、代码随想录

00、琐碎知识点

01、数组

02、链表

03、哈希表

04、字符串

05、双指针法

06、栈与队列

6.1、栈

6.2、队列

07、二叉树

7.1、前中后序-递归遍历

7.2、二叉树层序遍历模板

7.3、节点的定义

08、回溯算法

09、贪心算法

10、动态规划

11、单调栈

12、图论

02、低代码平台调研


01、代码随想录

00、琐碎知识点

 Arrays.asList() 是一个静态方法,用于将传入的参数转换为一个 List 对象。它的作用是将数组转换为一个固定长度的、不可变的 List,该 List 的底层实现仍然是原始数组,因此对数组或列表的修改都会影响到另一个。
这个方法通常用于将数组快速转换为 List,方便在需要 List 类型参数的方法中使用数组。例如:
String[] array = {"apple", "banana", "orange"};
List<String> list =
Arrays.asList(array);

这段代码将一个字符串数组转换为一个字符串列表。此时对数组或列表的修改都会相互影响,因为它们共享相同的数据源。但需要注意的是,由于底层实现是基于原始数组的,所以返回的 List 是一个固定长度的列表,不能进行增加或删除元素的操作,否则会抛出 UnsupportedOperationException 异常。

set1.retainAll(set2) 是一个Set集合的方法调用,用于保留两个集合中都存在的元素,即在set1中仅保留那些也存在于set2中的元素。该方法会修改调用它的set1集合,使其只包含那些同时也存在于set2中的元素,而不包含set2中不包含的元素。

举个例子,假设set1包含元素 {1, 2, 3, 4, 5},set2包含元素 {3, 4, 5, 6, 7},那么调用 set1.retainAll(set2) 后,set1将变成 {3, 4, 5},因为这些元素是同时存在于set1和set2中的。

这个方法在集合操作中经常用于求交集。

//定义翻转函数
public void reverse(char[] ch, int i, int j) {for (; i < j; i++, j--) {char temp = ch[i];ch[i] = ch[j];ch[j] = temp;}
}

这两个方法是 Java 中常用的用于类型转换的静态方法:

  1. Integer.parseInt(String s):

    • 用于将字符串转换为整数类型。它将接受一个字符串参数,并尝试将该字符串解析为一个带符号的十进制整数。
    • 如果解析成功,它将返回相应的整数值。
    • 如果字符串不是有效的表示整数的格式,或者包含超出整数范围的字符,它将抛出 NumberFormatException 异常。
  2. String.valueOf(Object obj):

    • 将指定的对象转换为字符串表示形式。
    • 如果传入的对象为 null,则返回字符串 "null"。
    • 否则,它会调用对象的 toString() 方法来获取字符串表示形式。

这些方法在实际编程中经常用于数据类型之间的转换。例如,parseInt() 可用于将用户输入的字符串转换为整数,而 valueOf() 可用于将其他数据类型(如整数、浮点数、布尔值等)转换为字符串。

//0347
Map<Integer, Integer> map = new HashMap<>();//key:数字,value:出现到频次、
map.put(curNum, map.getOrDefault(curNum, 0) + 1);ArrayList<Map.Entry<Integer, Integer>> list = new ArrayList(map.entrySet());
Collections.sort(list, (a, b) -> {//根据value进行排序return b.getValue() - a.getValue();
});Map<Integer, Integer> map = new HashMap<>();//key为数组元素值,val为对应出现次数
//在优先队列中存储二元组(num, cnt),cnt表示元素值num在数组中的出现次数
//出现次数按从队头到队尾的顺序是从大到小排,出现次数最多的在队头(相当于大顶堆)
PriorityQueue<int[]> pq = new PriorityQueue<>((pair1, pair2) -> pair2[1] - pair1[1]);
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {//大顶堆需要对所有元素进行排序pq.add(new int[]{entry.getKey(), entry.getValue()});
}

01、数组

Java 数组 | 菜鸟教程

int[] array1;//声明整数数组
array1 = new int[]{1, 2, 3, 4, 5};//初始化数组int[] array2 = new int[]{1, 2, 3, 4, 5};int[] array3 = new int[99];return new int[]{i, j};
for(type element: array) {System.out.println(element);
}
List<List<Integer>> res = new ArrayList<>();
Arrays.sort(nums);

02、链表

public class ListNode {// 结点的值int val;// 下一个结点ListNode next;// 节点的构造函数(无参)public ListNode() {}// 节点的构造函数(有一个参数)public ListNode(int val) {this.val = val;}// 节点的构造函数(有两个参数)public ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}

03、哈希表

Set<Integer> record = new HashSet<>();

map的用法

在Java中,Map是一种常用的数据结构,用于存储键值对。以下是Map接口中一些常用的方法:

  1. put(K key, V value): 将指定的键值对添加到Map中,如果键已存在,则替换对应的值。

  2. get(Object key): 返回指定键所映射的值,如果键不存在,则返回null。

  3. containsKey(Object key): 如果Map中包含指定的键,则返回true,否则返回false。

  4. containsValue(Object value): 如果Map中包含一个或多个键所映射的值等于指定值,则返回true,否则返回false。

  5. remove(Object key): 删除Map中指定键所映射的键值对,并返回该键所对应的值,如果键不存在,则返回null。

  6. keySet(): 返回Map中所有键构成的Set集合。

  7. values(): 返回Map中所有值构成的Collection集合。

  8. entrySet(): 返回Map中所有键值对构成的Set集合,每个元素都是一个Map.Entry对象,表示一个键值对。

  9. size(): 返回Map中键值对的数量。

  10. isEmpty(): 如果Map中不包含键值对,则返回true,否则返回false。

//0347
Map<Integer, Integer> map = new HashMap<>();//key:数字,value:出现到频次、
map.put(curNum, map.getOrDefault(curNum, 0) + 1);ArrayList<Map.Entry<Integer, Integer>> list = new ArrayList(map.entrySet());
Collections.sort(list, (a, b) -> {//根据value进行排序return b.getValue() - a.getValue();
});Map<Integer, Integer> map = new HashMap<>();//key为数组元素值,val为对应出现次数
//在优先队列中存储二元组(num, cnt),cnt表示元素值num在数组中的出现次数
//出现次数按从队头到队尾的顺序是从大到小排,出现次数最多的在队头(相当于大顶堆)
PriorityQueue<int[]> pq = new PriorityQueue<>((pair1, pair2) -> pair2[1] - pair1[1]);
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {//大顶堆需要对所有元素进行排序pq.add(new int[]{entry.getKey(), entry.getValue()});
}

04、字符串

s = s.replaceAll("\\s+", " ");//将字符串s中所有连续的空白字符替换为单个空格,从而实现将多个连续空白字符合并为一个空格的效果。
String s;
int[] record = new int[26];
for (int i = 0; i < s.length(); i++) {record[s.charAt(i) - 'a']++;
}
Integer.parseInt(String s);//字符串转换为整数
String.valueOf(Object obj);//将指定的对象转换为字符串表示形式。

05、双指针法

06、栈与队列

6.1、栈

Stack<String> stack = new Stack<String>();

6.2、队列

Deque<Character> deque = new LinkedList<Character>();
Deque<Character> deque = new LinkedList<>();
deque.push('a');
deque.pop();
deque.peek();
deque.isEmpty();

Deque接口代表了一个双端队列(Double Ended Queue),它支持在队列两端添加、删除和检查元素。LinkedList 类实现了 Deque 接口,因此你可以使用 LinkedList 来创建一个 Deque 实例。

  1. deque.push('a'):将元素 'a' 推入双端队列的开头。

  2. deque.pop():移除并返回双端队列的第一个元素。在这种情况下,它会移除并返回队列开头的元素。

  3. deque.peek():返回双端队列的第一个元素,但不移除。这个方法允许你查看队列开头的元素,但不会对队列做出任何修改。

  4. deque.isEmpty():检查双端队列是否为空。如果队列中没有元素,则返回 true,否则返回 false

Queue<Integer> queue;//和栈中保持一样元素的队列
queue1 = new LinkedList<>();Queue<Integer> queue = new LinkedList<>();//【用的最多】queue.add();
queue.size();
queue.push();
queue.poll();
queue.peek();
queue.offer();
queue.isEmpty();Queue<Integer> queue = new ArrayDeque<>();

07、二叉树

7.1、前中后序-递归遍历

// 前序遍历·递归·LC144_二叉树的前序遍历
class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result = new ArrayList<Integer>();preorder(root, result);return result;}public void preorder(TreeNode root, List<Integer> result) {if (root == null) {return;}result.add(root.val);preorder(root.left, result);preorder(root.right, result);}
}// 中序遍历·递归·LC94_二叉树的中序遍历
class Solution {public List<Integer> inorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();inorder(root, res);return res;}void inorder(TreeNode root, List<Integer> list) {if (root == null) {return;}inorder(root.left, list);list.add(root.val);             // 注意这一句inorder(root.right, list);}
}// 后序遍历·递归·LC145_二叉树的后序遍历
class Solution {public List<Integer> postorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<>();postorder(root, res);return res;}void postorder(TreeNode root, List<Integer> list) {if (root == null) {return;}postorder(root.left, list);postorder(root.right, list);list.add(root.val);             // 注意这一句}
}
//Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};class Solution {//589.N叉树的前序遍历public List<Integer> preorder(Node root) {List<Integer> res = new ArrayList<>();helper(root, res);return res;}public void helper(Node root, List<Integer> res) {if (root == null) {return;}res.add(root.val);for (Node ch : root.children) {helper(ch, res);}}
}

7.2、二叉树层序遍历模板

队列和集合的声明:

List<List<Integer>> res = new ArrayList<>();
List<List<Integer>> res = new ArrayList<List<Integer>>();
Deque<Node> deque = new LinkedList<>();
class Solution0102 {//力扣102.二叉树的层序遍历public List<List<Integer>> levelOrder(TreeNode root) {Deque<TreeNode> deque = new LinkedList<>();if (root != null) {deque.push(root);}List<List<Integer>> res = new ArrayList<List<Integer>>();while (!deque.isEmpty()) {int size = deque.size();ArrayList<Integer> tempList = new ArrayList<Integer>();while (size-- > 0) {//for (int i = 0; i < size; i++) {TreeNode treeNode = deque.poll();tempList.add(treeNode.val);if (treeNode.left != null) {deque.offer(treeNode.left);}if (treeNode.right != null) {deque.offer(treeNode.right);}}res.add(tempList);}return res;}
}

7.3、节点的定义

public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) {this.val = val;}TreeNode(int val, TreeNode left, TreeNode right) {this.val = val;this.left = left;this.right = right;}
}
import java.util.List;/*** 429.N叉树的层序遍历*/
public class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
public class Node2 {public int val;public Node2 left;public Node2 right;public Node2 next;public Node2() {}public Node2(int _val) {val = _val;}public Node2(int _val, Node2 _left, Node2 _right, Node2 _next) {val = _val;left = _left;right = _right;next = _next;}
};

08、回溯算法

09、贪心算法

10、动态规划

11、单调栈

12、图论

02、低代码平台调研

芋道

  1. 芋道源码 —— 纯源码解析博客
  2. https://github.com/YunaiV
  3. 芋道源码 (zhijiantianya) - Gitee.com

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

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

相关文章

Python学习 day05(异常)

异常 为什么要捕获异常 当程序遇到了BUG&#xff0c;如果不对BUG进行手动捕获&#xff0c;那么整个程序就会因为一个BUG而停止运行&#xff0c;这在有些情况下是会造成很大的损失&#xff0c;但是如果我们进行了手动捕获&#xff0c;那么整个程序会继续运行捕获异常的作用在于&…

抖音小店怎么申请入驻?具体的操作流程,今天一文详解!

大家好&#xff0c;我是电商小布。 想要来加入到抖音小店这个市场当中&#xff0c;我们第一件事就是要完成小店的入驻工作。 具体的流程是什么样的&#xff1f;具体都需要哪些内容呢&#xff1f; 接下来&#xff0c;小布就带大家详细了解一下。 1、注册 这里我们直接采用手…

电子邮箱怎么设置?如何配置邮箱SMTP服务?

电子邮箱服务器怎么设置&#xff1f;设置电子邮箱服务器的方法&#xff1f; 电子邮箱已成为我们日常生活和工作中不可或缺的一部分。它不仅是接收和发送邮件的工具&#xff0c;更是我们与外界沟通的重要桥梁。那么&#xff0c;如何设置电子邮箱&#xff0c;并配置SMTP服务呢&a…

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl‘报错解决

安装labelme出错了 根据爆栈的提示信息&#xff0c;我在cmd运行以下命令之后一切正常了&#xff0c;解决了问题&#xff01; pip install urllib31.26.6参考网址&#xff1a;ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ‘ssl’ module is compile…

抖音视频批量下载软件|视频评论采集工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据&#xff0c;也可以通过分享链接进行单个视频的抓取和下载&#xff0c;从而轻松获取抖音视频评论数据。 批量视频提取模块&a…

绿色蔬菜销售管理系统

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一 、设计说明 1.1 研究…

雾锁王国服务器要开服务器吗?

雾锁王国要开服务器吗&#xff1f;可以使用官方服务器&#xff0c;也可以自己搭建多人联机服务器&#xff0c;更稳定不卡&#xff0c;畅玩开黑。阿腾云分享atengyun.com给大家目前阿里云和腾讯云均提供雾锁王国服务器和一键搭建程序&#xff0c;成本26元即可搭建一台自己的雾锁…

对话式 AI 简化业务的 5 种方式

告别繁琐工作&#xff0c;对话式AI让内部沟通更高效 对话式人工智能正在彻底改变企业与客户互动、简化运营并增强客户体验的方式。 对话式人工智能可以通过以下五种方式改变您的业务&#xff1a; 1. 对话式人工智能&#xff1a;增强客户服务对话式人工智能通过聊天机器人和虚拟…

分享2024年低代码/零代码/无代码报告合集

前言 低代码是一种可视化软件开发方法&#xff0c;可在所需手动编码最少的情况下更快交付应用程序。低代码平台的图形用户界面和拖放功能可实现开发流程各个方面的自动化&#xff0c;摆脱对传统计算机编程方法的依赖。低代码平台使应用程序开发更加普及化&#xff0c;特别是对于…

【代码解读】OpenCOOD框架之model模块(以PointPillarFCooper为例)

point_pillar_fcooper PointPillarFCooperPointPillarsPillarVFEPFNLayerPointPillarScatterBaseBEVBackboneDownsampleConvDoubleConv SpatialFusion检测头 &#xff08;紧扣PointPillarFCooper的框架结构&#xff0c;一点一点看代码&#xff09; PointPillarFCooper # -*- c…

日更【系统架构设计师知识总结3】存储系统

【原创精华总结】自己一点点手打、总结的脑图&#xff0c;把散落在课本以及老师讲授的知识点合并汇总&#xff0c;反复提炼语言&#xff0c;形成知识框架。希望能给同样在学习的伙伴一点帮助&#xff01;

【C语言】学生宿舍信息管理系统

目录 项目说明 1. 数据结构设计 2. 功能实现 3. 主菜单设计 4. 文件操作 5. 系统使用 项目展示 1.主菜单功能界面 ​编辑 2.添加信息 3.查询信息 4.修改信息 5.删除信息 6.退出程序 项目完整代码 结语 在这篇博客中&#xff0c;我们将探讨如何使用C语言来开发…