letcode刷题
记录大学快要结束后的算法问题
nanfengnan?
世界解放,万物自由!
展开
-
2099. 找到和最大的长度为 K 的子序列
2099. 找到和最大的长度为 K 的子序列解题经验:1.求k个数问题,就将k个数放到堆中2.本题巧妙在用int[]记录了键和值,比map好的地方在于,可以存储重复的键map ~~ int[][] -->二维数组优点:可以存重复的键public int[] maxSubsequence(int[] nums, int k) { if (nums == null || nums.length == 0) return null; else原创 2022-03-26 17:06:35 · 218 阅读 · 0 评论 -
求素数的离散数学中的一种简单方法
// 求素数 离散数学 public void sushu(int n){ List<Integer> arr = new ArrayList<>(); // 用 1- 10 内的素数来处理数据 if (n <= 10){ arr.add(2);arr.add(3);arr.add(5);arr.add(7); System.out.println(arr); ...原创 2022-03-15 16:45:37 · 384 阅读 · 0 评论 -
二叉树算法
@TOC二叉树的基本操作二叉树的基本操作代码如下(示例):#include <stdio.h>#include <stdlib.h>#define MaxSize 100typedef char ElemType; //定义二叉树的存储类型//二叉树的物理存储typedef struct node{ ElemType data; struct node *lchild,*rchild;}*BitTree,BitNode;//线索二叉树的存储结原创 2021-04-20 23:54:29 · 90 阅读 · 0 评论 -
leetcode链表重点题目
leetcode刷题总结链表问题的解决思想leetcode链表题目清单链表问题的解决思想重点:这里是点睛之笔链表问题解决思想1.当想要空间复杂度为O(1)时候,使用快慢指针2.常规解法,把链表放到容器中在操作3.当某些题目需要返回特定结构的链表时,可以使用虚拟头节点解决,让虚拟头节点重现连接出符合预期的链表leetcode链表题目清单提示:以下是本篇文章正文内容,下面案例可供参考package class09.leetcode;import org.w3c.dom.ls.LSI原创 2022-03-12 08:44:58 · 68 阅读 · 0 评论 -
前缀树(字典树)trieTree两种实现
实现TrieTree中的易混淆的地方:注意查找字符串和字符串前缀的区别1.查找字符串的话,要使用最后一个节点判断是否为单词,多种解决办法,可以设置标志位,tree:单词,false:不是单词,是字串的中间部分或者也可以用第一种实现中的end值,end>0表示字符串结尾2.查找前缀的话,没条件,只要trietree中有前缀单词即可最后标注:数据结构的实现是多种多样的,掌握核心的灵魂才是关键数组实现trieTree:缺点浪费空间,一般不使用public class TrieTree {原创 2022-02-28 19:17:51 · 189 阅读 · 0 评论 -
求n是否为t的次幂的模板递归算法
public boolean isPowerOfT(int n) { if(n == 0) return false; else if(n == 1) return true; else if(n % t == 0 && isPowerOfFour(n/t)){ return true; } return false; } //原创 2022-02-25 20:20:22 · 126 阅读 · 0 评论 -
递归删除链表中指定的元素
递归删除链表中指定的元素 //递归删除元素,分为两个部分,头部(特殊处理)和头部后面两部分(子问题) ListNode* remove(ListNode* head,int val){ //边界条件,空链表 if (head == nullptr) return nullptr; //删除头节点后面的所有特定节点,并且让head->next指向他们头,防止断链原创 2022-02-08 20:40:16 · 418 阅读 · 0 评论 -
删除链表中倒数第n个节点
删除链表中倒数第n个节点 /** * 方法 * 1.哈希表 * 2.栈:倒着计算的问题,优先想到,边界条件烦人 * 3.暴力法:求长度 * 4.双指针(快慢指针,初始条件,移动策略,边界判断) * 5.翻转链表 * @param head * @param n * @return */ //栈,时间复杂度,O(n),空间复杂度:O(N) ListNode* removeNthFrom原创 2022-02-08 20:36:03 · 387 阅读 · 0 评论 -
各位相加问题(本质数字根问题)
#各位相加问题-方法1:公式法,把1-20数字列出来即可以找到规律int addDigits(int num) { return (num-1)%9+1;}-方法2:递归法,/10能降低数字的阶数int addDigits(int num){ if (num >=0 && num < 10) return num; int next = 0; //降低阶数 while (n原创 2022-02-08 17:58:30 · 403 阅读 · 0 评论 -
使用两个栈设计队列
题目类型:用栈实现队列class MyQueue {private: stack<int> que_stack; stack<int> com_stack;public: void push(int x) { //que_stack为空的话,将com_stack中的元素入栈道que_stack中 if (que_stack.empty() && !com_stack.empty()) {原创 2022-02-01 19:02:00 · 483 阅读 · 0 评论 -
letcode设计最小栈
###letcode设计最小栈:题目地址设计思想: 最小栈内部维护两个栈,一个栈正常使用,另一个栈每个元素都是都是当前栈的最小元素.代码如下:class MinStack {private: stack<int> min_stack; stack<int> com_st;public: void push(int val) { com_st.push(val); if (min_stack.empty() ||原创 2022-01-31 12:11:34 · 222 阅读 · 0 评论