自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 LeetCode每日一题(2020年9月14日),以及个人博客更新

搭建了一个个人博客,以后技术含量不高的博客都会在这里写,如果有自认为还可以的博客,会装载到csdn,特此说明。原题地址:代码实现: public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ans = new ArrayList<>(); if (root == null) { return ans; ..

2020-09-14 17:29:12 258

原创 LeetCode每日一题(20200908)

原题地址:执行结果:

2020-09-09 18:57:51 189

原创 LeetCode每日一题(20200909)

原题地址:思考过程:遍历数组,如果当前数字i和目标数字t相等,那么把当前数字加入结果,如果不等,那么可以先求f(nums,t-i)的结果,然后每一条list再加上i后,再放入结果。当t<=0时终止递归。需要注意的是直接加会产生重复数据,所以每次加入到结果页时需要判断是否已经加过了,可以用对list排序再取hash的方式来判断。代码实现:public List<List<Integer>> combinationSum(int[] candi..

2020-09-09 18:14:17 110

原创 LeetCode每日一题(20200907)

原题地址:思考过程:先遍历一遍数组,然后用map存数据,key表示数字,value表示数字的个数。然后对Map.Entry进行排序,再返回前k位的key即可。代码实现: public int[] topKFrequent3(int[] nums, int k) { int[] ans = new int[k]; Map<Integer, Integer> map = new HashMap<>(); f.

2020-09-07 18:53:31 122

原创 LeetCode每日一题(20200904)

原题地址:思考过程:bfs或者dfs。代码实现: public List<String> binaryTreePaths(TreeNode root) { return bfs(root); } public List<String> bfs(TreeNode root) { List<String> ans = new ArrayList<>(); if (root !

2020-09-04 12:15:00 83

原创 LeetCode每日一题(20200902)

原题地址:思考过程:首先要确定的是,什么样的字符串可以表示数字 1.全是由0-9组成的字符串 比如 234 2.在1的中间,加上一个小数点 比如 2.34 3.2+e(或者E)+1(带正负号的1) 比如 2.34e-23 4.在1,2,3的前面,加上正负号 比如 -2.34e-23然后判断字符串是否满足上述条件。代码实现: public boolean isNumber(String s) { s = s.tr...

2020-09-02 11:07:32 99

原创 LeetCode每日一题(20200901)

原题地址:思考过程:假如使用穷举,时间复杂度是2^n,题目说到n最大为20,似乎可行。按此实现代码。代码实现: public boolean PredictTheWinner1(int[] nums) { int left = 0, right = nums.length - 1; int sum1 = 0, sum2 = 0; return calc(nums, sum1, sum2, left, right, 0);..

2020-09-01 18:47:51 77

原创 LeetCode每日一题(20200831)

原题地址:思考过程:从房间0开始,bfs,然后判断是否走完所有的房间。代码实现: public boolean canVisitAllRooms(List<List<Integer>> rooms) { Set<Integer> history = new HashSet<>(); bfs(rooms, history, 0); return history.size() == ro.

2020-08-31 09:45:17 73

原创 LeetCode每日一题(20200827)

原题地址:思考过程:读完题目,首先想到的是用dfs或者bfs的思路解题,dfs,首先从所有行程中,找到“JFK”开始的行程,然后把此行程的to添加到ans,切to为新的开始行程,并把此行程删除后,再在剩下的行程中找开始行程,依次。然后找到一个结果后,保存,再找到一个结果,和上一次的比较后保存字符自然排序靠前的结果。代码实现: //[["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]] pu

2020-08-31 09:33:49 71

原创 LeetCode每日一题(20200828)

原题地址:思考过程:熟悉的周五,熟悉的简单题。leetcode为了大家的周末操碎了心。解题思路很简单,用两个数来保存水平移动数和垂直移动数,遍历一遍后,如果两个数都为0,即返回true,否则false。代码实现: public boolean judgeCircle(String moves) { char r = 'R', l = 'L', u = 'U', d = 'D'; char[] chars = moves.toCharArray();

2020-08-28 09:48:37 116

原创 LeetCode每日一题(20200826)

原题地址:思考过程:第一步要把‘2’-‘9’这样的字符转成对应的字符串,可以使用写一个方法,用switch返回,也可以使用hashmap(测试发现后者效率更好)。这时得到一个字符串数组,题意相当于使用这个字符串数组,每个字符串取一个字符,可以构成的所有字符。这时考虑两种解法,bfs和dfs。代码实现:(bfs)public List<String> letterCombinations(String digits) { Map<Character, Str

2020-08-26 11:58:42 201

原创 LeetCode每日一题(20200825)

原题地址:思考过程:输入的数组长度为n,那么子序列的长度范围是[2,n],而且长度为3的子序列,一定是在长度2的基础上,再往右找,依次,所以应该先找所有长度2的子序列,在此基础上找到3,一直到n要找到长度为2的子序列,遍历两遍即可,记录下每一种满足情况的数组和最右边的位置,考虑到会有重复的,用set存两个值拼接的字符去重。得到所有长度为2的子序列后,从3-n遍历,再遍历每一种满足情况的数组,从最右的位置依次移动到len,判断是否满足。代码实现: public List<L

2020-08-25 16:04:37 331

原创 LeetCode每日一题(20200824)

原题地址:如果s(长度n)满足条件,且子串sub长度为k,那么一定满足:1.n%k==0;2.1<=k<=n/2;3.s的前k位,即为sub。所以就从1到n/2遍历s的前k位子串,判断是否能由sub组成s。代码实现如下: public boolean repeatedSubstringPattern(String s) { if (s == null || s.length() < 2) { return false;

2020-08-24 11:35:04 209

原创 LeetCode每日一题(20200823)

原题地址:思考过程:如果逐个计算,数量级较大(虽然只是O(n),但是本题中的n会很大,所以最终的效率依然不高),然后观察数想与的过程中,容易得到结果0,而0再与依然是0,所以逐个计算,得到0后立即返回0,这是否内提高效率呢?代码实现:public int rangeBitwiseAnd(int m, int n) { if (m == n) { return n; } int left = m; fo.

2020-08-23 22:02:26 83

原创 LeetCode每日一题(20200822)

原题地址思考过程:先看本题的所有可能性,四个数字排列,4*3*2=24种,然后后在两个数字之间加一个运算符号,4*4*4=64,所以穷举有1536种可能性,是一个量级不大的常数,所以穷举可行;代码实现:第一版代码执行不通过(和以下代码类似),再来思考思路是否有缺漏,我考虑到的穷举是,四个数字排列,然后以此对四个数字做运算,但是ab运算后,cd运算后,两个结果再运算,这种可能没有考虑在内。按此再修改出如下代码:public boolean judgePoint24(int[] nums)

2020-08-23 20:58:02 131

原创 LeetCode每日一题(20200821)

原题地址终于是一道简单的题目了,是为了让大家周末愉快吗^_^思考过程:第一反应是用递归处理,然后需要分情况。1.树是空,返回0;2.树左节点为空,返回1+右节点最小深度;3.右节点为空,返回1+左节点最小深度;4.两个节点都不为空,返回左节点最小深度和右节点最小深度的最小值再+1。代码实现:public int minDepth(TreeNode root) { if (root == null) { return 0; }

2020-08-21 10:04:10 88

原创 LeetCode每日一题(20200820)

原题地址思考过程:分为三种情况,1.如果点击的是雷,修改为‘X’然后返回;2.如果点击的是和雷相连的点,找到这个点周围的雷数量k,修改为‘k’然后返回;3.如果点击的是空白方块,修改为‘B’,然后广度优先处理这个点周围的点,并记录下处理过的点。代码实现:char unknownMineC = 'M';//未挖出的地雷 char mineC = 'X';//挖出的地雷 char unknownC = 'E';//未挖出的空方块 char emptyC = 'B';//

2020-08-20 17:05:24 138

原创 LeetCode每日一题(20200819)

原题地址思考过程如果使用暴力求解,遍历所有子串,判断是否满足,时间复杂度会比较大,O(n³),性能不行找到可以去重的可能性,如果某字符串不是回文,那在他左右各加n个字符后的新串,也一定不是回文看了下题目相关标签,动态规划,如果使用DP,那么该怎么分解问题呢暴力求解:遍历所有子串,然后依次判断是否是回文代码实现:public int countSubstrings(String s) { int ans = 0; for (int i = 0; i

2020-08-19 18:00:19 183

原创 LeetCode每日一题(20200818)

原题地址思考过程需要将链表转成高度平衡的二叉搜索树,找到链表的中间节点,作为二叉树的根,前部分作为左节点,后部分作为右节点。然后递归,直到链表长度为1或者为空时,可以返回确定的二叉树可以使用快慢双指针,找到链表的中间节点,后部分链表和前部分链表的长度前部分链表可以从head开始构建链表(已知长度),然后再翻转代码实现:链表翻转:(LeetCode有原题)从链表头head开始构建链表代码如下:private ListNode reverse(ListNode head).

2020-08-18 18:49:45 74

原创 LeetCode每日一题(20200817)

原题地址思考过程高度平衡的二叉树的条件是:1.左节点是高度平衡的二叉树2.且右节点是高度平衡的二叉树3.且左右节点的高度差小于等于1所以可以想到用递归的方法同时还需要一个方法 getDepth ,用于获取二叉树的深度,该方法也是使用递归的解法,代码实现获取二叉树深度:当节点为空时,返回深度0;当节点不为空时,返回max(左节点深度+1,右节点深度+1);代码如下:private int getDepth(TreeNode root) { .

2020-08-17 10:39:46 91

原创 RecyclerView系列一,简单使用(kotlin实现)

RecyclerView系列一,简单使用(kotlin实现)RecyclerView系列二,自定义ItemDecoration(kotlin实现)​​​​​​​本文包含以下内容1.RecyclerView简单使用流程2.Adapter和ViewHolder的简单封装,itemView点击事件3.itemView的不同type,和常用的layoutManager1.RecyclerVi...

2019-12-16 10:17:13 961

原创 Android屏幕适配及其原理

本文包含以下要点:1.屏幕相关的基础理论知识;2.Android中使用到的尺寸单位;3.适配原理,以及对应的适配方案。1.基础理论知识;1.1 像素像素即px,是画面中最小的点,或者叫单位色块,没有固定的物理长度。比如一台1080*1920的手机,表示的就是在手机的横方向上,有1080个像素点,在手机的竖方向上,有1920个像素点,在显示画面时,不同的像素点显示不同的...

2019-11-28 20:55:06 741

原创 Android Studio简单集成NDK

最近有个项目需要用到NDK,所以记录下自己集成NDK时遇到的问题和解决办法。关于NDK和JNI的一些基础知识,可以参考这篇文章。集成时本地环境介绍:1.jdk版本:jdk1.8.0_171;2.Android Studio版本:Android Studio 3.1.2;3.CMake版本:3.10.2;4.NDK版本:19.1.5.集成步骤:1.安装CMake和ND...

2019-03-14 12:29:53 604

空空如也

空空如也

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

TA关注的人

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