- 博客(176)
- 收藏
- 关注
原创 杂题分享--部分翻转字符串
* 描述: * 给定一个字符串str和长度leftsize, * 请把str左侧leftsize的部分和右部分做整体交换。要求额外空间复杂度O(1)。 * 例如: * 输入: abcde 3 * 输出: deabc * 输入: abcdefgh 5 * 输出: fghabcde解法一:(10W人中99000人都会的解法) 应用左神一句话,大家都会得东西,你拿出来毫无意义,拿什么凸显自己,人家凭啥要你。分三次翻转 先翻转前 leftsize个 在翻转其它的 最后整体翻转 ..
2020-06-12 01:36:07 334
原创 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 152
原创 Raft 学习心得
Raft 算法: Raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。(在学术理论界最耀眼的还是Paxos,但是他比较难理解。)Raft is a consensus algorithm for managing a replicated log. raft 是一个共识算法,共识就是多个节点对莫个事情达成一致的看法,也就是说即使在部分节点故障,网络延时的情况下,...
2019-12-06 14:38:16 377
原创 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 100
原创 两个数组相加
输入: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 5360
原创 找出二叉树每层的最大值节点
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 1123
原创 给定一个节点,找出它是第几层第几个!
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 1172
原创 二叉树的左(右)视图
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 381
原创 链表翻转
反转一个单链表。示例:输入: 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 85
原创 快排非递归
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<...
2019-09-09 13:13:33 80
原创 二叉树的层次遍历带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 493
原创 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 1143
原创 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 962
原创 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 88
原创 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 81
原创 查找二叉树第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 223
原创 快速排序非递归实现
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 112
原创 leetcode 772 基本计算器III(包含+-*/ 以及括号)
现基本计算器以计算简单表达式字符串。表达式字符串可以包含左括号(和右括号)、加号+或减号、非负整数和空格。表达式字符串只包含非负整数、+、-、*、/运算符、左括号和空格。整数除法应该截断为零。您可以假定给定的表达式总是有效的。所有中间结果将在范围内[-2147483648,2147483647]"1 + 1" = 2" 6-4 / 2 " = 4"2*(5+5*2)/3+(6/...
2019-08-31 01:36:36 4429
原创 leetcode 227 基本计算器II(只有加减乘除无括号)
实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格。 整数除法仅保留整数部分。示例1:输入: "3+2*2"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5一般需要符号栈、数据栈,两个。但是,看到网上一个写的不错的算法,只用了一个数据...
2019-08-31 01:16:18 624
原创 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 417
原创 leetcode 150逆波兰表达式求值
根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9示例2:...
2019-08-31 00:46:00 85
原创 链表相加
定两个非空链表,每一个节点代表一个数字0-9,单个链表从左往右是由高位到低位组成的一个数, 现在需要将两个链表表示的数相加并且以链表形式返回。 举例:Input: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 8 -> 0 -> 7 可不可以不采用逆序的方式实现按照加法计算方法,我们需...
2019-08-31 00:21:02 468
原创 leetcode 122 买卖股票的最佳时机II(无限次交易)
定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易...
2019-08-30 23:56:50 193
原创 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 118
原创 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 135
原创 两个队列实现一个栈
import java.util.LinkedList;import java.util.Queue; /** * 两个队列实现一个栈 * * 一个队列加入元素,弹出元素时,需要把队列中的 元素放到另外一个队列中,删除最后一个元素 * 两个队列始终保持只有一个队列是有数据的 * */public class StackByQueue<T> { priva...
2019-08-30 13:39:15 109
原创 剑指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 101
原创 剑指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 164
原创 剑指offer(牛客网) 把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。import java.util.ArrayList;public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer&g...
2019-08-22 00:36:05 87
原创 剑指offer(牛客网)二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。public class Solution { public TreeLinkNode GetNext(TreeLinkNode p) { //如果有右子树 就是右子树最左的节点 if(p.right != nul...
2019-08-22 00:31:01 97
原创 剑指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 109
原创 剑指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 81
原创 剑指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 79
原创 剑指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 71
原创 剑指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 92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人