分割回文串
分割回文串
问题陈述
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
12345678输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]
思路实现
回溯
123456789101112131415161718192021222324252627282930class Solution { public List<List<String>> partition(String s) { List<List<String>> partitions=new ArrayList<>(); List<String> curpartion=new ArrayList<>(); doPartition(s,partitions,curp ...
关于我
我也不知道自己是什么样的一个人,普普通通,生活在一个南方温婉的小城,抚州临川,这里是我的家乡,也是汤显祖,曾巩、王安石、晏殊等人的故乡。
目前在大连理工大学软件工程研一在读,对专业知识不太感冒的我更多的喜欢动人的文字与美好的景物。热爱古典文化,喜欢读诗歌、散文和别人的故事。
喜欢大自然的花草树木,喜欢仰望天空中一朵漂浮不定的云,喜欢在水边捡一粒晶莹透亮的石子,喜欢夜幕降临时看归巢的鸟儿与天边的暮云。
从小到大,回想起来,孤独的日子总比快乐要少,成长的岁月里很多时候总是一个人,我不善交际,也不够聪明,也没有一点可以自豪的东西,以至于漫长的读书生涯里一直很自卑自闭,其间看了一些书,对我影响挺多。后面上大学后才开始逐渐接触一些人,认识了一些朋友,大一的时候参加文学社和学生会,后面又机缘巧合懵懵懂懂的加入了校外的一个演讲培训机构,得以认识更多的人,虽然后面离开后和那些人交集也很少了。大二的时候很巧的就认识一个女生,我们可能爱好比较相似,后面她约我,我们去看了电影,那是我生命中第一次去电影院,因为我自小在农村长大,也没什么朋友,所以外面这些娱乐方式都没经历过。那天她身穿一袭素净的汉服,扎的发辫特 ...
二进制矩阵中的最短路径
二进制矩阵中的最短路径
问题陈述
在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。
一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, …, C_k 组成:
相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通(此时,C_i 和 C_{i+1} 不同且共享边或角)
C_1 位于 (0, 0)(即,值为 grid[0][0])
C_k 位于 (N-1, N-1)(即,值为 grid[N-1][N-1])
如果 C_i 位于 (r, c),则 grid[r][c] 为空(即,grid[r][c] == 0)
返回这条从左上角到右下角的最短畅通路径的长度。如果不存在这样的路径,返回 -1 。
示例:
123输入:[[0,1],[1,0]]输出:2
思路分析
最短路通常考虑BFS方法求解。
需要注意的两点:是八连通不是四连通,最长路径指的是点的个数而不是边的长度。
代码实现
123456789101112131415161718192021222324252627282930313233343536373 ...
二进制中1的个数
二进制中1的个数
问题陈述
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
方法一:逐位与1相与
根据 与运算 定义,设二进制数字 n ,则有:
若 n & 1 = 0,则 n 二进制 最右一位 为 0 ;
若 n & 1 = 1 ,则 n 二进制 最右一位 为 1。
根据以上特点,考虑以下 循环判断 :
判断 n 最右一位是否为 1 ,根据结果计数。
将 n右移一位(本题要求把数字 n 看作无符号数,因此使用 无符号右移 操作)。
12345678class Solution{ int res=0; while(n!=0){//当全部比较完,n的二进制位全为0,即n=0. res+=n&1; n>>>=1;//java无符号右移,这样每次将n的二进制位置于最尾进行比较。 }}
二进制移位相关知识
**无符号右移:**无论是正数还是负数, ...
二叉树中的所有路径
二叉树中的所有路径
问题陈述
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
12345678910111213输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
思路分析
典型的回溯
1234567891011121314151617181920212223242526272829303132333435363738394041424344public class Solution{ //主函数 public List<String> allPaths(TreeNode root){ List<String> paths=new ArrayList<>(); if(root==null){ return paths; ...
为运算表达式设定优先级
为运算表达式设定优先级
问题陈述
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。
示例:
12345输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2
思路分析
考虑使用分治法。
1、先对输入字符串进行判断,若为空,返回一个空列表结果。
2、若不空但全为数字,则直接获取该数字字符串所表示的整数值。
3、出现了运算符,则对字符串根据该运算符位置划分左列表和右列表。分别计算左列表结果和右列表结果,然后根据该运算符得到一个最后结果。
1234567891011121314151617以 2 * 3 - 4 * 5 为例。2 和 3 - 4 * 5 两部分,中间是 * 号相连。2 * 3 和 4 * 5 两部分,中间是 - 号相连。2 * 3 - 4 和 5 两部分,中间是 * 号相连。有了两部分的结果,然后再通过中间的符号两两计算加入到最终的结果中即可。比如第一种情况,2 和 3 - 4 * 5 两部 ...
不同的二叉搜索树
不同的二叉搜索树
问题陈述
思路分析
构建一棵二叉搜索树
构建一颗二叉搜索树很简单,只需要选择一个根结点,然后递归去构建其左右子树。
1234567891011public TreeNode creatBinaryTree(int n){ return helper(1,n);}private TreeNode helper(int start,int end){ if(start>end) return null; int val=(start+end)/2; TreeNode root=new TreeNode(val); root.left=helper(start,val-1); root.right=helper(val+1,end); return root;}
要构建多颗二叉树,问题就在于如何选择不同的根节点,以构建不同的树和子树。
在上面的代码中,在选择根结点的时候,可以这样改造
12345// 选择所有可能的根结点for(int i = start; i <= end; ...
Typora图标一览
Typora图标一览
People
😄 :smile:
😆 :laughing:
😊 :blush:
😃 :smiley:
☺️ :relaxed:
😏 :smirk:
😍 :heart_eyes:
😘 :kissing_heart:
😚 :kissing_closed_eyes:
😳 :flushed:
😌 :relieved:
😆 :satisfied:
😁 :grin:
😉 :wink:
😜 :stuck_out_tongue_winking_eye:
😝 :stuck_out_tongue_closed_eyes:
😀 :grinning:
😗 :kissing:
😙 :kissing_smiling_eyes:
😛 :stuck_out_tongue:
😴 :sleeping:
😟 :worried:
😦 :frowning:
😧 :anguished:
😮 :open_mouth:
😬 :grimacing:
😕 :confused:
😯 :hushed:
😑 :ex ...
NodeJs和vue安装与配置
NodeJs和vue安装与配置
1、安装NodeJs环境
官网下载地址
1、下载msi安装文件并安装至个人开发环境目录,打开D:\Environment\NodeJs目录,新建node_global和node_cache文件夹。
2、管理员权限打开cmd命令行窗口,输入如下命令。
12C:\Windows\system32>npm config set prefix "D:\Environment\NodeJs\node_global"C:\Windows\system32>npm config set cache "D:\Environment\NodeJs\node_cache"
3、配置环境变量
(1)系统环境变量Path新增:D:\Environment\NodeJs\node_global
(2)新建环境变量Node_Path。
4、配置淘宝镜像源。
123C:\Windows\system32>npm install -g cnpm --registry=https://registry.npm.taobao ...
MySQL免安装配置及Navicat破解安装
MySQL免安装配置及Navicat破解安装
1、MySQL免安装配置
MySQL服务器官网下载链接
1、下载安装文件,解压至个人开发环境目录。
2、在D:\Environment\mysql-8.0.22目录下新建my.ini文件,文件内容如下。
(在文件资源管理器点击查看,勾选显示后缀,然后新建my.ini)
12345678910[mysqld]# 设置mysql的安装目录basedir=D:\mysql-5.7.22-winx64# 设置mysql数据库的数据的存放目录,必须是datadatadir=D:\mysql-5.7.22-winx64\data# mysql端口port=3306# 字符集character_set_server=utf8sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
3、管理员下打开cmd命令窗口,进入D:\Environment\mysql-8.0.22\bin目录。执行如下命令。出现service successfully installed。
1mysqld -install mysq ...