算法
decline妥协
无
展开
-
剑指offer56 异或思想
剑指offer56一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2]此题可以使用两数异或的思想来区分相同的数和不同的数。异或有一个鲜明的特点,它使得两个相同数异或结果为0,不同数结果一定不为0在一个有多个数字原创 2020-08-04 01:12:57 · 290 阅读 · 1 评论 -
迷宫问题BSF遍历
迷宫0代表可走的地方,1代表不可走的地方。每次只能走上下左右四个地方。问题:从起始点到终点的最短路径是什么?每一个点的坐标表示为一个类Point,start为起始点,end为终点class Point{ public int x; public int y; Point(int x,int y){ this.x = x; th...原创 2020-03-16 11:33:23 · 357 阅读 · 0 评论 -
KMP算法思想讲解一文读懂
KMP算法讲解我们知道KMP算法相比于暴力匹配字符串算法更快速,因为它不需要每次一单位地逐步移动,它可以根据模式串的特点策略地一次比较失败下次移动多个单位长。如何根据字串的策略进行多单位移动呢?3. 如图所示,当前三个字符匹配成功后,第四个字符出现匹配错误。按照暴力回溯算法的思想,模式串应该右移一个单位,但是在KMP算法中,它会根据前面已经匹配过的三个字符进行一种策略选择,它可能不再以一个...原创 2020-03-12 22:13:21 · 655 阅读 · 0 评论 -
二分查找边界索引
二分查找边界位置分析问题说明给你一个有序整数数组nums,和一个目标值target,请返回它在nums数组中的左边界索引和右边界索引例如:nums={1,2,3,3,3,4,5},target=3,那么就应该返回左边界索引2和右边界索引4问题分析...原创 2020-03-12 12:06:25 · 264 阅读 · 1 评论 -
二叉树中序遍历迭代代码理解
二叉树中序遍历迭代public void inorderTraversal(TreeNode root, Stack<TreeNode> stack){ while(root!=null || !stack.isEmpty()){ while(root!=null){ ...原创 2020-03-11 16:28:17 · 290 阅读 · 0 评论 -
二叉树前序遍历-迭代
二叉树的前序遍历对于一颗二叉树,当遍历它的时候使用递归总是轻而易举的。这是二叉树前序遍历-使用递归public void preorderTraversal(TreeNode root){ if(root==null) return; System.out.print(root.data+" "); preorde...原创 2020-03-11 13:56:49 · 1646 阅读 · 1 评论 -
回溯思想简单理解
回溯思想简单理解问题说明 给定一个正整数数组nums,为方便理解,假定数组中不存在重复的整数。列出这些整数的全排列 如:nums={1,2,3},那么答案为: {{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}}问题解释 1. 我们可以直接穷举出所有的排列可能,这也是回溯算法的核心思想,但一般回溯都会通过剪枝来减少不合理的可能值 2...原创 2020-03-10 21:03:48 · 409 阅读 · 0 评论 -
动态规划问题三简单理解——剪绳子
问题说明给你一根长度为n的绳子,请把绳子剪成整数长度的m段(m,n都是整数,n>1,m>1),每段绳子的长度记为k[0],k[1]…k[m]。请问k[0],k[1]…k[m]可能的最大乘积是多少?例如当绳子长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18。问题解释一条长为n的绳子最多被切n-1次当切完第m次后,它都会利用到前面m-1次的线段乘积,也...原创 2020-03-09 19:58:56 · 373 阅读 · 0 评论 -
动态规划问题二简单理解
问题说明你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。问题解释房屋用非负整数数组表示,house[len], 房屋数量为len。我们知道不偷取相邻的房屋且...原创 2020-03-09 16:33:59 · 92 阅读 · 0 评论 -
动态规划问题一帮助理解
问题说明 * 有 n 个学生站成一排,每个学生有一个能力值, * 牛牛想从这 n 个学生中按照顺序选取 k 名学生, * 要求相邻两个学生的位置编号的差不超过 d, * 使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?为了方便理解,我们假设每个学生的能力值都是正数一共有n个学生,我们用正整数数组arr[n]表示需要在n个学生中找到k个人的问题其实可以理解为:...原创 2020-03-09 12:43:39 · 201 阅读 · 0 评论