![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
LeetCode...
ACE小海豚
记录码农生活
展开
-
翻转链表合集
翻转链表大概可以分为如下四个,难度可以说是逐步增大的翻转整个链表(递归和非递归)翻转链表中的一部分按k个一组进行翻转(从前往后)按k个一组进行翻转(从后往前)首先给出节点类定义 class ListNode{ int val; ListNode next; public ListNode(int val){ ...转载 2020-03-16 22:23:19 · 281 阅读 · 1 评论 -
经典的最大子序列和
题目描述给定一个整数数组,找到一个连续子数组其元素之和最大并返回Input:numsOutput:最大连续子数组之和三种解法,分别是动态规划、贪心法、分治法,其中分治算法不是最优的。1. 动态规划定义dp[i]dp[i]dp[i]:以位置iii为结尾的子数组最大和dp[i+1]={dp[i]+nums[i],dp[i]>0nums[i],其他dp[i+1] = \begi...原创 2019-12-30 15:47:28 · 179 阅读 · 1 评论 -
移除数组中的指定值
LeetCode——移除数组中的指定值原创 2019-12-30 10:29:35 · 514 阅读 · 0 评论 -
数字塔问题(递归,递推和记忆化搜索到动态规划)
动态规划初步数字三角形问题(数字塔):有一个非负整数组成的三角形,第一行只有一个数,除了最下行之外的每个数的左下方和右下方各有一个数。如下图所示:计算从顶至底的路径,使得总和最大。解题思路:定义状态d(i, j)为从(i, j)出发时能得到的最大和,从(i, j)出发有两种决策,往左或者往右。 要求从(i, j)出发走到底部的最大值d(i, j),则相当于选择从左下走或者从右下走中的较...原创 2019-09-03 15:02:12 · 1122 阅读 · 0 评论 -
暴力求解系列之简单枚举
来自刘汝佳的《算法竞赛入门经典(第二版)》,下面实现代码均为Java简单枚举问题1: 输入正整数nnn, 按从小到大的顺序输出所有形如abcde/fghij=nabcde/fghij = nabcde/fghij=n的表达式, 其中a~ja~ ja~j恰好为数字0~90~ 90~9的一个排列(可以有前导0),其中2≤n≤792≤n≤792≤n≤79解题思路:直接枚举所有0~90~ 9...原创 2019-09-06 22:25:45 · 262 阅读 · 0 评论 -
连通子图问题(DFS的递归和非递归实现)
问题定义(以下均为Java实现) 输入一个mmm行nnn列的字符矩阵, 统计字符“@”组成多少个八连块。 如果两个字符“@”所在的格子相邻( 横、 竖或者对角线方向) , 就说它们属于同一个八连块。 例如, 下图有333个八连块。解题思路:深度优先遍历,记录已经遍历过的字符。深度优先遍历有不同的实现,下面是非递归(栈)或者递归的两种解法。解法一 基于栈的DFS,当遍历到某个字符时,入...原创 2019-09-18 19:52:18 · 954 阅读 · 0 评论