
数据结构与算法
茴香豆的茴有六种写法
这个作者很懒,什么都没留下…
展开
-
剑指offer
103.输入一个链表,从尾到头打印链表每个节点的值。import java.util.*;public class Solution { public ArrayList printListFromTailToHead(ListNode listNode) { Stackstack=new Stack(); ArrayListarra原创 2017-04-01 09:14:54 · 3542 阅读 · 0 评论 -
滑动窗口问题
leetcode 3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1: 输入: "abcabcbb" 输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb" 输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 输入: "pwwkew"...原创 2019-08-07 23:52:36 · 1553 阅读 · 0 评论 -
链表相关
leetcode 2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输...原创 2019-08-08 20:07:25 · 654 阅读 · 0 评论 -
回文问题
leetcode 9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1: 输入: 121 输出: true示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。对于数字的末位,直接取余就可以了,对于数字的首位,我们可以这么算。首先...原创 2019-08-08 21:27:23 · 1356 阅读 · 0 评论 -
栈的应用
leetcode 20. 有效的括号public boolean isValid(String s) { if(s.length() < 1){ return true; } if(s.length()%2!=0){ return false; } Map&l...原创 2019-08-10 10:48:14 · 1333 阅读 · 0 评论 -
01背包类算法题
关于背包问题的概念可以参考此处leetcode 416. 分割等和子集给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。示例 1: 输入: [1, 5, 11, 5],输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5],输出: false其实可以看成是一个01背包问题...原创 2019-08-25 23:32:09 · 1387 阅读 · 0 评论 -
斐波那锲数问题
leetcode 70 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2: 输入: 3 输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶...原创 2019-08-26 10:36:08 · 972 阅读 · 1 评论 -
动态规划之矩阵路径类
leetcode 62. 不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2 输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> ...原创 2019-08-26 18:02:11 · 842 阅读 · 0 评论 -
链表快慢指针
leetcode 19. 删除链表的倒数第N个节点public ListNode removeNthFromEnd(ListNode head, int n) { ListNode res = new ListNode(-1); res.next = head; ListNode fast = res; ListNode slo...原创 2019-08-26 20:18:19 · 756 阅读 · 0 评论 -
树的递归专题
leetcode 543. 二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1...原创 2019-08-27 10:50:36 · 811 阅读 · 0 评论 -
数组问题之二分查找专题
leetcode 33. 搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1: 输入: nu...原创 2019-08-27 13:29:14 · 1412 阅读 · 0 评论 -
递归回溯中的一些套路
从一个题说起leetcode 39. 组合总和class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target) { }}首先题目要求返回的类型为List<List<Integer>>,那么我们...原创 2019-08-29 17:21:20 · 808 阅读 · 0 评论 -
字符串类
leetcode方法一:将字符串按字符排序好作为keypublic List<List<String>> groupAnagrams(String[] strs) { if (strs == null || strs.length == 0) { return new ArrayList<>(); }...原创 2019-09-01 10:38:09 · 567 阅读 · 0 评论 -
旋转链表
61. 旋转链表public ListNode rotateRight(ListNode head, int k) { if (head == null || k == 0) { return head; } ListNode tmp = head; int len = 0; while (t...原创 2019-09-01 15:09:03 · 427 阅读 · 0 评论 -
数学类
不均匀硬币等概率问题一 利用不均匀硬币产生等概率问题描述:有一枚不均匀的硬币,抛出此硬币后,可用foo()表示其结果。已知foo()能返回0和1两个值,其概率分别为0.6和0.4。问怎么利用foo()得到另一个函数,使得返回0和1的概率均为0.5。问题分析:分析连续抛出两次硬币的情况,正反面的出现有四种情况,概率依次为:(1) 两次均为正面:0.6*0.6=0.36(2)第一...原创 2019-07-23 10:08:11 · 1721 阅读 · 0 评论 -
搜索
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3链接:https://leetcode-cn....原创 2019-07-26 00:23:43 · 1496 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 二 动态规划篇
最长公共子串1.给定两个字符串A和B,同时给定两串的长度n和m。测试样例:"1AB2345CD",9,"12345EF",7 返回:4public class LongestSubstring { //最长公共子串要求是连续的 public int findLongest(String A, int n, String B, int m) { ...原创 2017-04-04 23:57:55 · 5970 阅读 · 0 评论 -
校招编程题集锦
1.题目描述 设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。输入描述: 有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N第二行包含N个数(每个数不超过1000,空格分开)。原创 2017-08-19 16:42:24 · 974 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 三 数组篇
----------------------------------------------------------------------------41. 缺失的第一个正数public int firstMissingPositive(int[] nums) { if(nums == null || nums.length == 0){ ret...原创 2017-12-21 17:32:40 · 3658 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 一 排序篇
从有n个元素的乱序数组中找出第k大的元素方法一 堆排序 时间复杂度o(nlogk) 不推荐方法二基于快速排序的方法,时间复杂度为o(n)选一个枢轴点,用快排的方法将数组分为两部分,位于枢轴点左边的数都比它大,位于枢轴点右边的数都比它小,1)如果枢轴点的索引刚好是k-1,则此时它对应的就是数组的第k大的数;2)如果比k-1大,那么第k大的数位于它的左边部分;...原创 2019-04-27 21:19:46 · 3961 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 三 树
1.用递归和非递归两种方式遍历二叉树public static void inOrderRecur(Node head){ if(head == null){ return; } if(head.left != null){ inOrderRecur(head.left); ...原创 2019-05-02 22:23:53 · 3762 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 四 经典算法题
目录约瑟夫环问题寻找第k小的数2sum 3sum问题数组中超过一半或者超过1/3的数约瑟夫环问题/** * https://blog.youkuaiyun.com/weixin_38214171/article/details/80352921 */public class JosephCircle { public static...原创 2019-06-11 20:52:36 · 3613 阅读 · 0 评论 -
经典算法题:大数据处理常见算法题
-------------------------------------------------------------经典算法题:大数据处理常见算法题--------------------------------------------------------------转载 2017-03-03 17:28:41 · 3716 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 五 大数据专题
1.布隆过滤器原创 2019-06-17 14:59:56 · 3645 阅读 · 0 评论 -
leetcode 剑指offer刷题归类之 六 位运算专题
常用的位运算技巧如下[LeetCode-191] Number of 1 Bits(判断一个整数中有多少个1)Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).For example...原创 2019-07-06 17:31:55 · 3468 阅读 · 0 评论 -
贪心算法
LeetCode455. 分发饼干-------------------------leetcode 45. 跳跃游戏 IIpublic int jump(int[] nums) { int cnt = 0; if (nums == null || nums.length == 0) { return cnt; ...原创 2019-07-19 00:27:59 · 870 阅读 · 0 评论 -
双指针
leetcode209】长度最小的子数组public class MinSubArrayLen { public int minSubArrayLen(int s, int[] nums) { if (nums == null || nums.length == 0) { return 0; } int minl...原创 2019-07-20 11:18:36 · 2504 阅读 · 0 评论 -
01背包与完全背包问题
1.递归解法public static int knapsack(int capacity, int[] weights, int[] values) { int n = weights.length; //递归的套路,加一个index索引,控制递归到了哪一层 return bestValue(capacity,n-1,weights,valu...原创 2019-07-29 23:30:19 · 6477 阅读 · 0 评论 -
递归回溯专题
leetcode 22. 括号生成给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]List<String> list = new ArrayList<>();...原创 2017-02-28 20:11:18 · 2161 阅读 · 0 评论 -
堆排序Java实现
----public class HeapSort { public static void main(String[] args) { int[] arr = {3,5,1,7,6,2}; heapSort(arr); for (int i = 0; i < arr.length ; i++) { S...原创 2019-02-17 21:43:58 · 3606 阅读 · 0 评论