- 博客(62)
- 收藏
- 关注
原创 Leetcode
这里写自定义目录标题Leetcode 77 爬楼梯方法一:直接递归方法二:暂存中间结果递归方法三:动态规划Leetcode 77 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?方法一:直接递归func climbStairs(n int) int { if n < 4 { return n } return climbStairs(n-1) + climbStairs(n-2)}方法二:暂存中间结果递
2022-04-26 13:28:24 231
原创 Python—批量修改文件名
批量修改文件名import ospath = "G:/text/" # 目标路径"""os.listdir(path) 操作效果为 返回指定路径(path)文件夹中所有文件名"""filename_list = os.listdir(path) # 扫描目标路径的文件,将文件名存入列表a = 0for i in filename_list: used_name = path + filename_list[a] new_name = path + "Female_"
2020-05-30 11:02:53 252
原创 python--爬取网站图片并下载
改进空间:图片名称非法字符处理多线程下载import reimport osimport shutilimport requestsfrom bs4 import BeautifulSoup# 下载图片def download_jpg(image_url, image_localpath): response = requests.get(image_url,...
2020-05-04 22:37:30 621
转载 pycharm-打开与关闭科学模式
PyCharm 在2017.3版本之后加入了Scientific Mode,在科学计算时,可以方便的追踪变量变化等。使用NumPy的时候,系统会提示 use scientific mode,但进去后就运行程序的在控制台中,很麻烦,想改回来的话按下面步骤取反即可.有时打开了scientific mode时,但文件中引入了numpy 等科学计算包时并没有被自动识别,以scientific ...
2020-04-24 18:39:51 3927
原创 python-如何使用Python自动打开chrome百度搜索功能
python-如何使用Python自动打开chrome百度搜索功能1.前期准备2.程序编写3.安装selenium方法一:使用pycharm安装方法二:命令行安装4.配置chrome浏览器驱动5.配置环境变量6.运行程序1.前期准备已安装Python 3.*已安装pycharm2.程序编写from selenium import webdriverdriver = webdriv...
2020-04-23 21:54:26 3732 1
原创 LeetCode第102题:二叉树的层序遍历
二叉树的层序遍历BFS和DFS双解题目详述DFSBFS题目详述给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],返回其层次遍历结果:[ [3] , [9,20] , [15,7] ]DFSclass Solution { List<List<Integer&...
2020-04-04 20:48:09 110
原创 LeetCode第51题:N皇后
N皇后问题题目详述分治法题目详述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,“…Q....
2020-04-03 19:37:02 129
原创 LeetCode第17题:电话号码的字母组合
电话号码的字母组合题目详述分治法题目详述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。分治法class Solution { List<String> results = new ArrayList<>(); private String digits;...
2020-04-02 22:16:44 187
原创 LeetCode第169题:多数元素
第169题:多数元素题目详述解法一解法二解法三题目详述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2解法一因为超过半数,所以排序后多数元素一定位于中间位置。cl...
2020-03-31 21:16:07 427
原创 LeetCode第78题:子集
子集问题题目详述解法一题目详述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解法一newsets:[[1]][[2]][[2], [1, 2]][[3]][[3]...
2020-03-28 17:42:49 171
原创 LeetCode第50题:Pow(x, n)
@[TOC](Pow(x, n)分治法解答)题目详述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 :输入: 2.00000, 10输出: 1024.00000说明:-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。分治法class Solution { public double my...
2020-03-27 17:57:18 189
原创 LeetCode第22题:括号生成
第22题:括号生成(回溯)题目详述回溯法题目详述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]回溯法class Solution{ List<String> output = new Arr...
2020-03-27 15:39:25 93
原创 LeetCode第47题:全排列 II
全排列 II题目详述回溯法题目详述给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]回溯法class Solution { int[] nums; List<List<Integer>> output = new ArrayList(); ...
2020-03-25 12:47:43 283
原创 LeetCode第46题:全排序
LeetCode第46题题目详述回溯解法题目详述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]回溯解法class Solution { private int[] nums; List<List<In...
2020-03-24 10:23:25 116
原创 LeetCode第77题:组合
LeetCode第77题题目详述解法:回溯题目详述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解法:回溯class Solution{ private int n; private int k; List<L...
2020-03-22 22:24:39 145
原创 LeetCode第105题 从前序与中序遍历序列构造二叉树
Leetcode:从前序与中序遍历序列构造二叉树题目详述递归解法题目详述根据一棵树的前序遍历与中序遍历构造二叉树。例如 给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]得到:[3,9,20,null,null,15,7]递归解法class Solution { private int[] preorder...
2020-03-21 18:16:39 85
原创 产品笔记
用户体验五要素什么是用户体验一、认识这些要素二、战略层: 产品目标和用户体验三、范围层:功能规格和内容需求四、结构层:交互设计和信息架构五、框架层:界面设计、导航设计和信息设计六、表现层:感知设计七、要素的应用什么是用户体验就是“产品”与外部世界的联系。任何在用户体验上的努力都是为了 **提高效率** 。基本上以两种形式体现出 来:帮助人们工作效率更高和减少他们犯错的几率。 用户体验的五要...
2020-03-16 13:23:02 1755
原创 线程基础与生命周期
线程基础与生命周期线程的生命周期线程的生命周期在Java 5以后,线程的状态被明确定义在其公共内部枚举类java.lang.thread.state中,分别是:新建(new):表示线程被创建出类还没有真正启动的状态,可以认为它是一个Java内部状态就绪(runable):表示该线程已经在JVM中运行,当然由于执行需要计算资源,它可能是正在运行,也可能还在等待系统分配给他CPU片段,在就绪...
2020-03-09 22:45:03 116
原创 ReentrantLock 与Synchronized 对比分析
ReentrantLock分析 及 与Synchronized对比分析ReentrantLock概念、公平性ReentrantLock 中的重要方法对比条件变量 ConditionReentrantLock概念、公平性什么是再入?它表示当一个线程试图获取一个它已经获取的锁时,这个获取动作就自动成功,这是对锁获取粒度的一个概念,也就是锁的持有是以线程为单位,而不是基于调用次数。Java锁实现强...
2020-03-09 19:50:08 241
原创 Synchronized 分析与使用
Synchronized 底层分析与锁的升级与降级Synchronized底层之锁的升级与降级Synchronized底层之锁的升级与降级Synchronized代码块是由一对儿monitorEnter 和 monitorExit实现的,Monitor对象是同步的基本实现单元。在Java 6之前,Monitor的实现完全依赖操作系统的互斥锁,因为需要从用户态到内核态的切换,所以完全是一个无差...
2020-03-09 18:47:18 123
原创 线程安全之锁总结
线程安全1.0 Synchronized 和 ReentrantLock的区别2.0 需要掌握的知识点3.0 什么是线程安全4.0 锁类型Synchronized 底层原理及应用ReentrantLock 底层原理及应用其他锁(ReadWriteLock、StampedLock)为什么我们需要ReadWriteLock(读写锁)等其他锁?StampedLock1.0 Synchronized 和...
2020-03-09 12:23:04 235
原创 JUC知识点汇总
JUC汇总总结:总结:通常说的并发包即java.util.concurrent及其子包,集中了Java并发的各种基础工具类,具体:提供了比Synchronized更高级的各种同步结构:CountDownLatch、CyclicBarrier、Semaphore等,可实现更丰富的多线程操作,例如用Semaphore作为资源控制器,限制同时工作的线程数量。JUC之各种同步结构(Semapho...
2020-03-08 18:28:51 738
原创 JUC之知识点补充(Unsafe机制)
Unsafe机制什么是Unsafe机制getUnsafe()方法Unsafe的功能内存操作CAS线程调度class相关对象操作数组相关内存屏障系统相关什么是Unsafe机制Unsafe是sun.misc包下的一个类,主要提供一些用于执行低级别不安全操作的方法,如直接访问系统内存资源,自主管理内存资源等,这些方式在提升Java运行效率、增强Java语言底层资源操作能力等方面起到了很大的作用,但是...
2020-03-08 13:47:15 246
原创 JUC之并发包内部组成(AQS 和 CAS)
AtomicInteger、CAS、AQSAtomicInteger底层实现原理?CAS机制AQS机制AtomicInteger底层实现原理?AtomicInteger是int类型的一个封装,提供原子性的访问和更新操作,其原子性操作的实现是基于CAS操作。所谓CAS表征的是一些列操作的集合,获取当前数值,进行一些运算,利用CAS指令试图进行更新。如果当前数值未变,代表没有其他线程进行并发修改,...
2020-03-07 22:46:12 573
原创 JUC之线程池
线程池详解常见问题Executor基本框架源码分析线程池线程池的生命周期典型Execute方法源码分析线程池的实践常见错误线程池的大小选择策略常见问题Java并发类库提供的线程池有哪几种,分别有什么特点?通常我们都是利用Executors提供的通用线程方法,去创建不同配置的线程池,主要区别在与不同的ExecutorsService类型或是不同的初始参数。Execuotors提供了5种不同的...
2020-03-07 01:00:03 138
原创 JUC之线程安全队列
Concurrent型、CopyOnWrite型、Blocking型常见问题BlockingQueue中哪些队列是有界的哪些队列是无界的BlockingQueue底层实现常见问题需要达到的水平:哪些队列是有界的,哪些队列是无界的。针对特定场景需求如何选择合适的队列实现。从源码的角度常见的线程安全队列是如何实现的,并进行了哪些改进,以提高效率。ConcurrentLinkedQueu...
2020-03-05 14:52:18 335
原创 JUC之各种线程安全容器
CopyOnWrite系列、Concurrent系列大体结构Concurrent系列CopyOnWrite系列大体结构总体结构比较简单。Concurrent系列如果应用侧重于Map放入与获取的速度,而不在意顺序的话ConcurrentHashMap很好,反之ConcurrentSkipListMap 更适合,如果我们对大量数据做频繁的修改,ConcurrentSkipListMap 也可...
2020-03-04 21:11:01 558
原创 JUC之各种同步结构(Semaphore、CountDownLatch、CyclicBarrier)
Semaphore、CountDownLatch、CyclicBarrierSemaphore概念实现示例代码符合等出租车的示例代码总结CountDownLatch 和 CyclicBarrier二者区别CountDownLatch 代码示例CyclicBarrier 代码示例Semaphore概念Semaphore是Java版的信号量的实现。它通过控制一定数量的允许(permit)的方式,...
2020-03-04 20:13:21 408
原创 LeetCode第297题:二叉树的序列化和反序列化
LeetCode第297题题目详述解法题目详述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结...
2020-02-25 15:46:57 102
原创 LeetCode第111题:二叉树的最小深度
LeetCode第111题题目详述解法一解法二解法三题目详述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。解法一递归。时间复杂度:O(n),空间复杂度:O(logn)class Solution { public int minDepth(TreeNode root) { if (...
2020-02-24 23:41:49 142
原创 LeetCode第104题:二叉树的最大深度
LeetCode第104题题目详述解法一解法二题目详述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。解法一递归。时间复杂度:O(N),空间复杂度:O((N+logn)/2)class Solution{ public int maxDepth(TreeNode root) { if (root == null) return 0; e...
2020-02-21 16:00:27 105
原创 LeetCode第226题:翻转二叉树
LeetCode第226题题目详述解法一解法二题目详述翻转一棵二叉树。解法一递归。时间复杂度:O(n),空间复杂度:O(n)class Solution { public TreeNode invertTree(TreeNode root) { if (root == null) return null; TreeNode left = invertTree(root.left...
2020-02-20 16:06:27 142
原创 LeetCode第22题:括号生成(递归)
LeetCode第22题题目详述解法题目详述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。示例:例如,给出 n = 3,生成结果为:["((()))","(()())","(())()","()(())","()()()"]解法递归.时间复杂度:O(2^n),空间复杂度;O(2^n)class Solution { List&l...
2020-02-20 15:25:33 181
原创 LeetCode第429题:N叉树的层序遍历
LeetCode第429题题目详述解法一解法二解法三题目详述给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)解法一队列实现广度优先搜素。时间复杂度:O(n),空间复杂度:O(n)class Solution { public List<List<Integer>> levelOrder(Node root) { Lis...
2020-02-19 00:57:19 139
原创 LeetCode第589题:N叉树的前序遍历
LeetCode第589题题目详述解法一解法二题目详述给定一个 N 叉树,返回其节点值的前序遍历。解法一递归。时间复杂度:O(n),空间复杂度:O(logn)class Solution { public List<Integer> preorder(Node root) { List<Integer> list = new ArrayLi...
2020-02-18 17:39:09 89
原创 LeetCode第590题:N叉树的后序遍历
LeetCode第590题题目详述解法一解法二题目详述给定一个 N 叉树,返回其节点值的后序遍历。解法一递归。时间复杂度:O(n),空间复杂度O(logn)class Solution { public List<Integer> postorder(Node root) { List<Integer> ans = new ArrayLis...
2020-02-18 16:37:48 182
原创 LeetCode第144题:二叉树的前序遍历(二叉树)
LeetCode第144题题目详述解法一解法二题目详述给定一个二叉树,返回它的前序遍历。解法一递归。时间复杂度:O(n),空间复杂度:O(logn)class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ...
2020-02-17 17:18:30 121
原创 LeetCode第94题:二叉树的中序遍历(二叉树)
LeetCode第94题关于递归的误解题目详述解法一解法二解法三关于递归的误解结论:递归本身并不存在所谓的效率差。认为递归慢的原因:它要多开一些栈,存储中间结果,如果递归深度很深的话会存在效率问题。现实实践中:一般情况不会有非常深的递归计算机的存储方式和编译器对递归,特别是尾递归的优化,使得我们可以认为递归的效率和循环的效率是一样的。不需要带有有色眼镜一看到递归就认为一定比循环慢...
2020-02-17 16:26:28 219
原创 LeetCode第49题:字母异位词分组(哈希)
LeetCode第49题题目详述解法一解法二题目详述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]解法一排序数组分类。时间复杂度:O(NKlog...
2020-02-17 13:52:22 243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人