自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 资源 (2)
  • 收藏
  • 关注

原创 字符串相加/相乘(大数相加、相乘)

字符串相加题目:思路:①取两个字符串末位字符 - '0’得到此位字符代表的实际值,相加并加上前一位的进位值②用StringBuffer来存答案,最后记得反过来,因为append每次都加在当前StringBuffer的后面代码:class Solution { public String addStrings(String num1, String num2) { int len1 = num1.length() - 1; int len2 = num2.l

2021-07-26 22:39:07 430 1

原创 主要元素-摩尔投票

题目:思路:①哈希表记录每个数字出现次数,不符合空间复杂的O(1)的要求②摩尔投票:算法的基本思想是:在每一轮投票过程中,从数组中删除两个不同的元素,直到投票过程无法继续,此时数组为空或者数组中剩下的元素都相等。2.1如果数组为空,则数组中不存在主要元素;2.2如果数组中剩下的元素都相等,则数组中剩下的元素可能为主要元素,要再判断一下出现次数是否达到一半以上代码:class Solution { public int majorityElement(int[] nums) {

2021-07-09 15:00:23 114

原创 进制转换与特殊的进制转换

10进制转n进制辗转相除class Solution { //设置字符数组 //可以添加任意不重复字符,提高能转换的进制的上限 static char chs[] = new char[36]; static { for(int i = 0; i < 10 ; i++) { chs[i] = (char)('0' + i); } for(int i = 10; i < chs.length; i++) { chs[i] = (char)('A' + (i

2021-06-29 12:31:17 252 1

原创 贪心算法(局部最优)

1.概念:贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择2.应用:平时购物找零钱时,为使找回的零钱的硬币数最少,不要求找零钱的所有方案,而是从最大面值的币种开始,按递减的顺序考虑各面额,先尽量用大面值的面额,当不足大面值时才去考虑下一个较小面值,这就是贪心算法3.存在局部最优问题的体现:找零钱时,如果零钱面额是【1,5,10】,仿佛没

2021-06-18 17:03:44 2996

原创 比较字符串中两个字符是否相等,不可用.equals(),要用==

if(string.charAt(m).equals(row.charAt())){ System.out.println("相等"); }报错:error: char cannot be dereferenced因为:1.char是基本数据类型,已经是值了,这里比较值可以直接用==2.Character是其包装类,引用类型,才可以用equals()方法。==反而不能直接比较值了。...

2021-05-24 11:02:13 1221

原创 前缀和

1.一维前缀和题目:代码:class NumArray { int[] sum; public NumArray(int[] nums) { int len = nums.length; sum = new int[len + 1]; for(int i = 0; i < len; i++){ sum[i + 1] = sum[i] + nums[i]; } } p

2021-04-22 21:18:22 60

原创 二叉搜索树是二叉树的一种

二叉搜索树 / 二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树,一棵二叉搜索树(BST)是一棵二叉树,其中,每个节点的值都要大于其左子树中任意节点的值而小于右子树中任意节点的值。因此,二叉搜索树中序遍历得到的值序列是递增有序的...

2021-04-13 10:08:00 91

原创 179.最大数(字符串解法,字符串知识点密集)

题目:解题思路:想法简单,实现较难对数组每个首位进行比较,若首位相等就比较第二位,以此类推,对数组进行排序但是首位相等比较第二位这个实现起来比较困难这里巧妙的用到了字符串,a,b是两个字符串,对a+b和b+a进行大小比较,可以同样实现功能,这里当然不能直接比较a,b,因为a = "9" , b = "45"时,a是要排在b前面的,即此时a比b大代码:class Solution { public String largestNumber(int[] nums) { i

2021-04-12 21:24:07 125

原创 双指针

删除有序数组中的重复项 IIhttps://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/

2021-04-06 21:53:35 62

原创 Java字符串拆分

1.split()import java.util.*;public class test{ public static void main(String[] args){ String str = "你好啊,2021年3月24日"; String[] strArray = str.split(",");//分割出来的字符数组 List<String> result = new ArrayList<>(); for (int i = 0; i < str

2021-03-24 13:16:40 435

原创 Python表示地址时的斜杠与反斜杠

1.斜杠 /python中默认用 斜杠 “/” 来表示地址sys.path.append("C:/users/yzeng27/Desktop/Code")2.反斜杠 \然而Windows下的路径都是反斜杆,如图:在许多编程语言中会将反斜杠 “\” 字符识别成转义字符,因此不可以直接用反斜杠在python中处理路径解决方法是在路径前加一个r字母,让路径变成原始字符串,不把反斜杠 “\” 理解为转义字符sys.path.append(r"C:\Users\yzeng27\Desktop\Cod

2021-03-02 16:20:53 4289

原创 Python sys module

sys module1.sys.stdin.readline()①python3中使用sys.stdin.readline()可以实现标准输入,其默认输入的格式是字符串,如果是int,float类型则需要强制转换。②sys.stdin.readline() 每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象,读出的内容包含’\n’,因此不能直接和定义的字符串比较,否则必不相等③sys.stdin.readline() 会读取末尾’\n’,加.strip(),去掉回车符

2021-01-14 16:10:39 113

原创 并查集Union-Find

定义:并查集是一种简洁而优雅的数据结构,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:合并(Union):满足条件时,把两个不相交的集合合并为一个集合。具体操作为把一个集合的根节点指向另一个集合的根节点查询(Find):查询两个元素是否在同一个集合中。核心:集合根节点的存储:可以用哈希表或数组实现,存储的值代表当前节点所指向的根节点初始化时,每个节点的根节点为自己990. 等式方程的可满足性题目:思路:设计一个并查集,索引代表的时字母,索引对于的值代

2021-01-06 21:46:13 136

原创 Maven学习笔记

介绍Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目,是一个项目构建管理工具基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。Maven 曾是 Jakarta 项目的子项目,现在是由 Apache 软件基金会主持的独立 Apache

2021-01-05 22:10:33 66

原创 排序算法整理

1.插入排序思路:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入代码:void insertion_sort(int arr[], int len){ int i,j; for (i=1; i<len; i++){ for (j=i; j>0 && arr[j-1]>arr[j]; j--)//从后往前扫描 swap(arr[j-1],a

2020-12-30 22:38:42 160

原创 岛屿类问题通用解法:DFS

题目1:200.岛屿的数量:思路:①遍历每一个位置,若当前位置为陆地,使用一次DFS(检查上下左右四个点),并将此次DFS中发现是陆地的位置改值,防止陷入死循环,那么使用DFS的总次数就是岛屿的数量②因为要检查每个位置的上下左右,因此要做范围检测,即所谓“先污染后治理”,超出范围的直接返回代码:class Solution { public int numIslands(char[][] grid) { int rows = grid.length;//行数

2020-12-29 15:05:48 529 1

原创 96.不同的二叉树+卡特兰数+只算二叉搜索树可能的结构数

题目:思路:①首先明确卡特兰数可用来计算:给定N个节点,能构成多少种不同的二叉搜索树②动态规划,每个节点可组成的二叉搜索树=左子树可能结构*右子树可能结构代码:class Solution { public int numTrees(int n) { int[] dp = new int[n+1]; dp[0] = 1;//0时为空树 dp[1] = 1;//1时只有一种可能 for(int i = 2; i <= n

2020-12-27 16:33:22 122

原创 95.不同的二叉搜索树II+卡特兰数+输出可能的结构

题目:思路:①首先明确概念,二叉搜索树是二叉树的一种:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;②因此想到枚举所有可行的根节点,并递归生成其左右二叉树代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right;

2020-12-27 11:12:18 99 1

原创 779.第K个语法符号+没有位运算的递归

题目:思路:①暴力法:生成每一行的数组,按索引位找值并输出。缺点:内存浪费②递归(找规律):除第一行外,每一行的前半部分是上一行,后半部分是上一行的反转代码:class Solution { public int kthGrammar(int N, int K) { return helper(N, K, 0); } public int helper(int N,int K,int flag){ if(N == 1)

2020-12-26 19:31:49 134

原创 50.Pow(x,n)+快速幂

题目:思路①暴力递归,但这样时间复杂度是O(n)②递归快速幂:拆解2^n = 2^(n/2) * 2^(n/2),这样时间复杂度是O(log(n))代码:class Solution { public double myPow(double x, int n) { if(n < 0){ x = 1 / x; n = Math.abs(n); } return count(x, n);

2020-12-26 15:58:49 58

原创 119.杨辉三角||+asList()知识点

题目:思路:①暴力思路就是每一层保存为一个数组,每一层调用上一层的进行元素添加,但这样空间复杂度不行②为了达到O(n)的复杂度,从后往前添加每一层的元素就可以了代码:class Solution { public List<Integer> getRow(int rowIndex) { Integer[] ans = new Integer[rowIndex+1]; for(int i = 0; i <= rowIndex; i++){

2020-12-22 22:23:39 130

原创 297.二叉树的序列化和反序列化

题目:思路:①序列化:前序遍历的方法递归走完整棵树,输出字符串即可②反序列化:对字符串进行spilt()处理,前序遍历的话首位元素为根节点,这个节点用完就从字符串数组里删除,然后递归画出整棵树代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x

2020-12-22 16:54:18 70

原创 36.有效数独+泛型擦除知识点

题目:思路:①有效数独:9行9列9个3*3宫中数字不重复②利用哈希映射存储每行每列每宫格,key为数字,value为出现个数,当value>1时,无效③遍历行与列容易,遍历宫格时,索引index = (i/3)*3 + j/3代码:class Solution { public boolean isValidSudoku(char[][] board) { HashMap<Character,Integer>[] rows = new HashMap[

2020-12-21 22:17:57 131

原创 305.两个数组的交集II

题目:思路:①为了较小的空间复杂度,遍历较短的数组,生成一个哈希映射,Key为元素,Value为出现次数②接下来遍历较长的数组,每当遇见重复的元素,Value-1,输出结果,当Value =0时,不再输出结果,因为输出结果中元素出现次数应与元素在两个数组中出现次数的最小值一致代码:class Solution { public int[] intersect(int[] nums1, int[] nums2) { if (nums1.length > nums2.l

2020-12-18 22:48:48 88 1

原创 705.设计哈希集合

题目:思路:也就是要维护一个二维动态数组来存储这些数据,要注意的是LinkedList中有三种remove()方法默认使用的是根据索引来移除元素因此这时,我们要把每个函数的形参都设置为Integer型,这样子就可直接根据元素值对表进行操作代码:class MyHashSet { Bucket[] bucket_array; int keyRange; /** Initialize your data structure here. */ public MyH

2020-12-15 13:33:25 108

原创 填充每个节点的下一个右侧节点指针 完美二叉树+普通二叉树

完美二叉树题目:思路:节点的右子节点->节点的next的左子节点代码:/*// Definition for a Node.class Node { public int val; public Node left; public Node right; public Node next; public Node() {} public Node(int _val) { val = _val; }

2020-12-11 14:13:50 108

原创 105.从前序与中序遍历序列构造二叉树+106.从中序与后序遍历序列构造二叉树

前序和中序遍历构造二叉树的题目:思路:在任何遍历中,左右子树的长度总相同①因为前序遍历的数组形式是这样的{根节点,{左子树},{右子树}}而中序遍历的数组形式是这样的:{{左子树},根节点,{右子树}}因为此题中所有节点的值均不相同因此可以借助前序遍历数组的第一个节点来找到根节点在中序遍历数组中的索引,进而可以得到左右子树的长度②以此为出发点,构造递归函数,返回的是根节点代码:/** * Definition for a binary tree node. * public cla

2020-12-05 19:45:21 95

原创 122.二叉树的路径总和

题目:思路1:迭代迭代:用两个队列来维护整个过程,一个存节点,一个存路径和,同步进出队列当为叶子节点时,判断当前路径总和是否符合要求队列为空时,遍历结束代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } *

2020-12-05 16:35:42 120

原创 101.对称二叉树

题目:思路1.迭代:迭代:构造一个队列,其中每对相邻的两个节点值相同的话,则镜像对称在往其中添加节点时,两个节点的左右子节点按相反的顺序插入队列中代码1.迭代:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } *

2020-12-05 11:22:49 43

原创 102.二叉树的层序遍历(广度优先遍历BFS----Breadth_First_Search)

题目:思路:利用广度优先遍历的思想,用一个队列来做到层序遍历队列不为空时,每次循环对当前层的节点数做操作,并确定下一层节点代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solut

2020-12-04 19:50:39 115

原创 145.二叉树的后序遍历

题目:知识提要:后序遍历的规则是若节点为空,则空操作返回;否则先后序遍历左子树然后后序遍历右子数最后访问根节点代码:递归和前/中序遍历类似,迭代的则需要跟前一个节点比较来避免再次进入右子树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {}

2020-12-03 16:52:50 47

原创 94. 二叉树的中序遍历

题目:知识提要:前序遍历的规则是若节点为空,则空操作返回;否则先中序遍历左子树然后先访问根节点,再中序遍历右子数代码: //迭代 class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<Integer>(); Stack<TreeNode> sta

2020-12-03 15:40:16 123 1

原创 144.二叉树的前序遍历

题目:知识提要:前序遍历的规则是若节点为空,则空操作返回;否则先访问根节点,然后前序遍历左子树再前序遍历右子数代码一:递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val

2020-12-03 15:15:44 75

原创 150.逆波兰表达式求值

题目:思路:代码:用switch可以简洁一点class Solution { public int evalRPN(String[] tokens) { Stack<Integer> stack = new Stack<Integer>(); int len = tokens.length; int num1,num2; for(int i = 0;i < len;i++){

2020-12-03 11:12:36 75

原创 单调栈:739.每日温度 + 42.接雨水 +84.柱状图中最大的矩形

题目:思路:①暴力法:两个循环②单调栈:用栈来存放数组下标当栈为空或当前温度小于等于栈顶索引对应的温度时,入栈否则,出栈,日期则等于i - stack.pop()代码:class Solution { public int[] dailyTemperatures(int[] T) { Stack<Integer> stack = new Stack<Integer>(); int len = T.length;

2020-12-01 16:42:28 61

原创 232. 用栈实现队列

题目:思路:①设计两个栈,一个用来装元素,一个用来弹元素②每当弹元素的栈为空时,将装元素的栈中的元素弹出并压入弹元素的栈代码:class MyQueue { Stack<Integer> in_stack; Stack<Integer> out_stack; /** Initialize your data structure here. */ public MyQueue() { in_stack = new Stack

2020-12-01 11:02:55 39

原创 138. 复制带随机指针的链表

题目:知识提要:①浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。即修改拷贝的新对象会影响原始对象。②深拷贝:将一个对象从内存中完整的拷贝一份出来,在堆内存中开辟一个新的区域存放新的对象。即修改拷贝的新对象不会影响原始对象。思路:①在原始链表的每个节点之后添加该节点的副本②循环原始链表的每个节点的random,若其有值则添加给复制的节

2020-11-30 16:08:40 55

原创 2.两数相加

题目:思路:从左往右做加减法,但是右边是高位思路简单,注意实现细节/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { thi

2020-11-28 17:48:31 63

原创 328. 奇偶链表

题目:思路:分为奇偶两条链来处理,最后将奇数链尾部与偶数链头部连接即可代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next)

2020-11-28 11:29:28 77

原创 160. 相交链表

题目:思路:①若两条链表有交点的话,交点及以后的链表段必然相等(不考虑X型这样的相交),设链表A长度为a+m, 链表B长度为b+m②此时要做的是就是消除前半段的长度差,所以当A/B链表的指针指向自己的尾部时,使其开始遍历B/A(对方的链表),相交且不为null时即为起始节点,若相交但为null时则没有交点代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * Li

2020-11-27 10:03:12 116

NVIDIA-CUDA统一计算设备架构编程指南.7z

NVIDIA-CUDA统一计算设备架构编程指南

2021-05-06

东北大学电机拖动PPT

东北大学电机拖动PPT;《电机拖动与控制》,本教材将“电机学”、“电力拖动基础”和“工厂电气控制”三门课程有机整合成“电机拖动与控制”一门课程,这不仅避免了不必要的重复,紧缩了学时,而且密切了电机、电力拖动、电气控制之间的联系,加强了系统性。

2018-11-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除