自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/move-zeroes白话实现:快慢指针 必须考虑第一个为0的情况 官方解还是很简单class Solution { public void moveZeroes(int[] nums) {

2020-09-03 17:41:51 90

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2cv1c/白话实现:快慢指针,但写起来很臃肿,参考别人的 同样逻辑 但简洁很多class Solution {

2020-09-02 19:04:13 113

原创 每天一到算法题-字符串

每天一到算法题-字符串白话描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnx13t/白话实现:纯数学问题 很巧妙class Solutio.

2020-09-01 19:33:19 140

原创 java实现二叉遍历-总结

java实现二叉遍历-总结白话描述:尽量统一队形,最后发现递归全部可以统一队形,迭代的话,前后可以,中不可以白话实现:原因在于,前跟后的区别就是list的add跟addfirst//递归: public void qianxubianlihelp1(TreeNode root, List l){ if(root!=null){ l.add(root.data); if(root.left!=null) qianxubianlihelp1(root.left,l); if

2020-08-31 18:58:28 87

原创 对数据结构的简单理解-二叉树遍历

对数据结构的简单理解-二叉树遍历白话描述:一个数据结构,由本身的数据跟后续两部分组成。用java实现加深理解白话实现:编写一个类,并提供相关方法,查看结果public class TreeNode { int data; TreeNode left; TreeNode right; public TreeNode(int x){ data=x; }} public TreeNode jianli(){ TreeNode root=new TreeNod

2020-08-31 18:53:45 94

原创 java实现二叉遍历-后序2

java实现二叉遍历-后序2白话描述:迭代白话实现:迭代 public List houxukbianli2(TreeNode root){ LinkedList<Integer> l=new LinkedList(); LinkedList<TreeNode> stack=new LinkedList(); if(root==null) return l; stack.add(root); while(!stack.isEmpty()){ T

2020-08-31 18:50:32 94

原创 java实现二叉遍历-后序1

java实现二叉遍历-后序1白话描述:递归白话实现:递归 public void houxubianlihelp1(TreeNode root, List l){ if(root!=null){ if(root.left!=null) houxubianlihelp1(root.left,l); if(root.right!=null) houxubianlihelp1(root.right,l); l.add(root.data); } } public

2020-08-31 18:49:21 71

原创 java实现二叉遍历-中序2

java实现二叉遍历-中序2白话描述:迭代白话实现:迭代 public List zhongxubianli3(TreeNode root){ LinkedList<Integer> l=new LinkedList(); Stack<TreeNode> s=new Stack(); if(root==null) return l; TreeNode tmp=root; while(tmp!=null||!s.isEmpty()){ wh

2020-08-31 18:47:19 77

原创 java实现二叉遍历-中序1

java实现二叉遍历-中序1白话描述:递归白话实现:递归 public void zhongxubianlihelp1(TreeNode root, List l){ if(root!=null){ if(root.left!=null) zhongxubianlihelp1(root.left,l); l.add(root.data); if(root.right!=null) zhongxubianlihelp1(root.right,l); } }

2020-08-31 18:46:05 85

原创 java实现二叉遍历-前序2

java实现二叉遍历-前序2白话描述:迭代白话实现:迭代 public List qianxubianli2(TreeNode root){ LinkedList<Integer> l=new LinkedList(); LinkedList<TreeNode> stack=new LinkedList(); if(root==null) return l; stack.add(root); while(!stack.isEmpty()){ T

2020-08-31 18:44:55 79

原创 java实现二叉遍历-前序1

java实现二叉遍历-前序1白话描述:递归白话实现:递归 public void qianxubianlihelp1(TreeNode root, List l){ if(root!=null){ l.add(root.data); if(root.left!=null) qianxubianlihelp1(root.left,l); if(root.right!=null) qianxubianlihelp1(root.right,l); } } publi

2020-08-31 18:43:24 73

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定两个数组,编写一个函数来计算它们的交集。说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii白话实现:放进两个list 遍历 官方hasemap实现 注意 map.getOrDefault(num,0) Arrays.copyOfRange(s,0,in

2020-08-31 18:40:11 106

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/single-number白话实现:hashmap hashset常规操作。不好。官方位运算很优秀class Solution { public int singleNumber(int[

2020-08-31 18:32:35 84

原创 每天一到算法题-字符串

每天一到算法题-字符串白话描述:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome白话实现:逻辑不难 熟悉一下java 字符串的api。stringbuffer: append,new stringbuffer(String).reverse(), Character.toLowerCase

2020-08-21 17:50:16 103

原创 每天一到算法题-链表

每天一到算法题-链表白话描述:请判断一个链表是否为回文链表。进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-linked-list白话实现:傻瓜解法只要注意第二次遍历的时候分基数偶数就好。官方解法收获:list 的add get,前后的双指针,到达中间点的方法,最后极致的迭代,很厉害。class Solution { public boole

2020-08-21 17:37:23 81

原创 每天一到算法题-字符串

每天一到算法题-字符串白话描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。提示:你可以假定该字符串只包含小写字母。来源:力扣(LeetCode)链接https://leetcode-cn.com/problems/first-unique-character-in-a-string白话实现:用hashmap 这次不浪费了 其实定义的时候加上<Character,Integer>后面就不用强制转换 (int) 了class Solution

2020-08-21 15:58:17 184

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x248f5/白话实现:有n中方法,随便写一个,但hashmap<Integer,Integer> 后面是浪费的 hashset比较好cla

2020-08-21 15:48:05 93

原创 每天一到算法题-链表

每天一到算法题-链表白话描述:删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?来源:力扣(LeetCode)链接https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn2925/白话实现:还是只想到了傻瓜解法。class Solution { public ListNode removeNthFro

2020-08-18 17:50:19 80

原创 每天一到算法题-链表

每天一到算法题-链表白话描述:反转一个单链表。进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnnhm6/白话实现:傻瓜解法很臃肿,官方的迭代或递归确实没想到class Solution { public ListNode reverseList(ListNode head) { if(

2020-08-18 17:38:06 125

原创 每天一到算法题-链表

每天一到算法题-链表白话描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。(没有头节点)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnarn7/白话实现:没有头节点没有傻瓜解法。只有iq题解法class Solution { public void deleteNode(ListNode node) {

2020-08-18 17:32:42 91

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。要求使用空间复杂度为 O(1) 的 原地 算法。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2skh7/白话实现:傻瓜解法,k个位置循环k次。官方解法有个很炫酷的分割分别排序法class Solution

2020-08-18 16:57:15 72

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/白话实现:一快一慢index1与index2,之前不存在的,放入hashmap,遇到存在的,

2020-08-18 16:42:06 71

原创 每天一到算法题-链表

每天一到算法题-字符串白话描述:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。(没有头节点)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnarn7/白话实现:没有头节点没有傻瓜解法。只有iq题解法class Solution { public void deleteNode(ListNode node)

2020-08-18 16:27:02 127

原创 对数据结构的简单理解-链表

对算法的简单理解-链表白话描述:一个数据结构,由本身的数据跟后续两部分组成。用java实现加深理解白话实现:编写一个类,并提供相关方法,查看结果package ListNode;public class ListNode { int data; ListNode next; public ListNode(int x){ data=x; }}package ListNode;public class fangfa { public ListNode

2020-08-13 19:26:59 209

原创 每天一到算法题-字符串

每天一到算法题-字符串白话描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnhbqj/白话实现:以中间为界,分别与相对位

2020-08-13 19:21:57 86

原创 每天一到算法题-数组

每天一到算法题-数组白话描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2zsx1/白话实现:这一题的暴力实现有点复杂实在想不出来。通过画图,发现其最大

2020-08-12 19:51:48 170

原创 每天一道算法题-数组

每天一到算法题-数组白话描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum白话实现:用一个map,从第一个数开始值,键放入,从第二个数开始,如果符合条件,返回两个下标,并break。class Solution { pub

2020-08-11 19:36:28 147

原创 java实现冒泡排序

java实现冒泡排序白话描述:一组数组,从最右边的元素开始,从右往左对比,如果比左边的元素小,元素不动,游标往左走,如果比左边的元素大,交换位置,游标也往左走,直到跟最左边的元素比完,接着是倒数第二个元素,以此类推。比完最后两个元素数组从左往右从大到小。白话实现:两层循环,外面一层循环是总的遍历次数,即元素总数-1次,里面一层循环与游标所在位置有关,游标所在处从右往左递减。public class test17maopaopaixu { public static void main(Str

2020-08-10 16:33:36 82

原创 java实现快速排序

java实现快速排序白话描述:一组数组,找一个基准元素,比它大的放左边,比它小的放右边,执行完一遍后,又分别递归执行小于它的部分与大于它的部分白话实现:选0号元素x为基准元素,游标j从右边往左走,比x大的话继续走,比x小的填到x的位置,原本的位置变0,然后游标i从左往右走,比x小继续走,比x大填到刚才数组右边的数值为0的位置,原本的位置也变0,以此类推,直到i=j,即游标重合,左边的都小于等于x,右边的都大于等于x。public class test17kuaisupaixu { publ

2020-08-10 16:16:06 160

空空如也

空空如也

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

TA关注的人

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