自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赵智任的博客

小萌新,不定时分享一下自己的算法以及学习经历

  • 博客(176)
  • 收藏
  • 关注

原创 杂题分享--部分翻转字符串

* 描述: * 给定一个字符串str和长度leftsize, * 请把str左侧leftsize的部分和右部分做整体交换。要求额外空间复杂度O(1)。 * 例如: * 输入: abcde 3 * 输出: deabc * 输入: abcdefgh 5 * 输出: fghabcde解法一:(10W人中99000人都会的解法) 应用左神一句话,大家都会得东西,你拿出来毫无意义,拿什么凸显自己,人家凭啥要你。分三次翻转 先翻转前 leftsize个 在翻转其它的 最后整体翻转 ..

2020-06-12 01:36:07 338

原创 leetcode 48 旋转图像

给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3...

2019-12-20 18:54:49 155

原创 Raft 学习心得

Raft 算法:​ Raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。(在学术理论界最耀眼的还是Paxos,但是他比较难理解。)Raft is a consensus algorithm for managing a replicated log.​ raft 是一个共识算法,共识就是多个节点对莫个事情达成一致的看法,也就是说即使在部分节点故障,网络延时的情况下,...

2019-12-06 14:38:16 382

原创 leetcode 6 Z字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数...

2019-12-04 21:16:55 86

原创 leetcode 7 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。//我觉得最...

2019-11-18 20:28:31 80

原创 leetcode 179 最大数

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。//这个题其实和最小字典序一样public class Solution { public String largestNumber(i...

2019-09-26 18:21:40 109

原创 两个数组相加

输入:123123输出:456输入:99输出:18public class Main { public int[] add(int[] a, int[] b) { if (a.length == b.length) { for (int i = a.length - 1; i > 0; i--) { ...

2019-09-12 19:35:37 5383

原创 找出二叉树每层的最大值节点

import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Main { public static class TreeNode { public int val; public TreeNode left; ...

2019-09-10 21:42:49 1126

原创 给定一个节点,找出它是第几层第几个!

import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Main { public static class TreeNode { public int val; public TreeNode left; ...

2019-09-10 21:37:00 1197

原创 二叉树的左(右)视图

static void LeftView(TreeNode node) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(node); //设置 size 和 child 两个标记,child在循环中会变,size不会变,作为循环条件 ...

2019-09-09 13:31:42 758

原创 反转从位置 m 到 n 的链表

反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULLclass Solution { public ListNode reverseBetw...

2019-09-09 13:27:02 384

原创 链表翻转

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL//非递归public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; ...

2019-09-09 13:22:34 87

原创 快排非递归

import java.util.Arrays;public class TestQuickSort { public static int partion(int []array,int low,int hign){ int tmp=array[low]; while(low<hign){ while(low&lt...

2019-09-09 13:13:33 82

原创 二叉树的层次遍历带Level

class Solution { List<List<Integer>> levels = new ArrayList<List<Integer>>(); public void helper(TreeNode node, int level) { // start the current level ...

2019-09-07 20:52:13 496

原创 Java 实现26进制加法

import java.util.ArrayList;import java.util.Scanner;public class Test { //全局变量进位 private static int jinWei = 0; public static void main(String args[]) { Scanner sc = new Scann...

2019-09-01 17:15:13 1149

原创 Java 实现64进制加法

public class test627{ public static void main(String[] args) { //0~9 48~57 //A~Z 65~90 //a~z 97~122 String A ="bb"; char Ope ='+'; String B="bb"; System.out.print(Binary_operation_64(A...

2019-09-01 17:14:17 965

原创 leetcode 121 买卖股票的最佳时机(1笔交易)

class Solution { public int maxProfit(int[] prices) { if (prices.length == 0) { return 0; } int res = 0; for (int i = 0, min = prices[0]; i < prices...

2019-08-31 02:45:25 89

原创 leetcode 123 买卖股票的最佳时机III(2笔交易)

class Solution { public int maxProfit(int[] prices) { if (prices.length <= 0) { return 0; } //进行初始化,第一天 s1 将股票买入,其他状态全部初始化为最小值 int s1 = -pric...

2019-08-31 02:43:19 82

原创 查找二叉树第n行的结点数

public static int getNumInLevel(TreeNode root, int n) { if (root == null || n <= 0) return 0; if (n == 1) { return root == null ? 0 : 1; } int left = getNumInLevel(ro...

2019-08-31 02:22:32 226

原创 快速排序非递归实现

import java.util.Arrays;import java.util.Stack;public class Main { /** * 采用非递归的方法,首先要想到栈的使用,通过阅读递归调用部分的代码,思考如何用栈来代替。 * 递归调用的核心代码是 temp = partition(a, low, high); * 每次循环都必须包含这句核...

2019-08-31 02:12:41 311

原创 leetcode 25 k个一组翻转链表

给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode prev = null;...

2019-08-31 01:54:33 116

原创 leetcode 772 基本计算器III(包含+-*/ 以及括号)

现基本计算器以计算简单表达式字符串。表达式字符串可以包含左括号(和右括号)、加号+或减号、非负整数和空格。表达式字符串只包含非负整数、+、-、*、/运算符、左括号和空格。整数除法应该截断为零。您可以假定给定的表达式总是有效的。所有中间结果将在范围内[-2147483648,2147483647]"1 + 1" = 2" 6-4 / 2 " = 4"2*(5+5*2)/3+(6/...

2019-08-31 01:36:36 4470

原创 leetcode 227 基本计算器II(只有加减乘除无括号)

实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5一般需要符号栈、数据栈,两个。但是,看到网上一个写的不错的算法,只用了一个数据...

2019-08-31 01:16:18 635

原创 leetcode 224 基本计算器(只有加减和括号)

实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式可以包含左括号(,右括号),加号+,减号-,非负整数和空格。示例 1:输入: "1 + 1"输出: 2示例 2:输入: " 2-1 + 2 "输出: 3示例 3:输入: "(1+(4+5+2)-3)+(6+8)"输出: 23class Solution { public i...

2019-08-31 01:06:46 423

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

根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2:...

2019-08-31 00:46:00 86

原创 链表相加

定两个非空链表,每一个节点代表一个数字0-9,单个链表从左往右是由高位到低位组成的一个数, 现在需要将两个链表表示的数相加并且以链表形式返回。 举例:Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 8 -> 0 -> 7 可不可以不采用逆序的方式实现按照加法计算方法,我们需...

2019-08-31 00:21:02 471

原创 leetcode 122 买卖股票的最佳时机II(无限次交易)

定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...

2019-08-30 23:56:50 195

原创 leetcode 93 复原IP地址

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]思路:本题用递归实现,一个ip地址只有3个点,根据点的个数判断合法不合法(也即字符串长度只能比点的个数多,且小于3*(k+1),k为点的个数)。如果最后不需要添加点,则字段值小于256...

2019-08-30 23:56:31 120

原创 leetcode 56 区间合并

给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。c...

2019-08-30 22:56:30 138

原创 两个队列实现一个栈

import java.util.LinkedList;import java.util.Queue; /** * 两个队列实现一个栈 * * 一个队列加入元素,弹出元素时,需要把队列中的 元素放到另外一个队列中,删除最后一个元素 * 两个队列始终保持只有一个队列是有数据的 * */public class StackByQueue<T> { priva...

2019-08-30 13:39:15 110

原创 剑指offer(牛客网) 最小的K个数

import java.util.ArrayList;import java.util.PriorityQueue;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] arr, int k) { if(k > arr.length) { ...

2019-08-26 15:02:04 102

原创 剑指offer(牛客网) 数据流的中位数

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。import java.util.LinkedList;public class Solution { ...

2019-08-22 00:38:42 98

原创 剑指offer(牛客网)序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序...

2019-08-22 00:37:14 166

原创 剑指offer(牛客网) 把二叉树打印成多行

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。import java.util.ArrayList;public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer&g...

2019-08-22 00:36:05 90

原创 剑指offer(牛客网)二叉树的下一个节点

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。public class Solution { public TreeLinkNode GetNext(TreeLinkNode p) { //如果有右子树 就是右子树最左的节点 if(p.right != nul...

2019-08-22 00:31:01 98

原创 剑指offer(牛客网) 和为S的两个数字

输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。import java.util.ArrayList;public class Solution { /* * i,j分别表示数组两端下表 * 当array[i]+array[j]>S时,j-- 尾端向前移动,两数据和增大 *...

2019-08-22 00:12:50 110

原创 剑指offer(牛客网) 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。import java.util.Stack;public class Solution { Stack<Integer> stack = new Stack<Integer>(); //弄一个最小值栈 即可 Stack<Integer...

2019-08-21 23:20:20 83

原创 剑指offer(牛客网) 反转链表

public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) { return head; } ListNode newHead = null; Li...

2019-08-21 23:00:01 81

原创 剑指offer(牛客网) 数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0public class Solution { public double Power(double base, int exponent) { //由于exponent是int类型的整数,则可能包含正整数、0 以...

2019-08-21 22:35:23 72

原创 剑指offer(牛客网) 从尾到头打印链表

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。import java.util.ArrayList;import java.util.Stack;public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ...

2019-08-21 22:19:16 93

空空如也

空空如也

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

TA关注的人

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