上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页
摘要: 思路1:二次遍历(暴力法) 第一次遍历链表得到链表长,第二次遍历链表以从数组末端开始往前加入链表。 代码: 时间复杂度O(n),空间复杂度O(1) /** * Definition for singly-linked list. * public class ListNode { * int val 阅读全文
posted @ 2021-03-02 00:25 zjcfrancis 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 题目的大意是NumArray方法初始化数组,sumRange求一个区间内的数字和 其中sumRange方法会被多次调用,因此要想出一个降低其时间复杂度的求和算法。 思路:前缀和 前缀和,即数组中第i个元素及其之前元素的和。 sumRange(i,j)等于 j 的前缀和 减去 i-1 的前缀和 在此题 阅读全文
posted @ 2021-03-01 21:50 zjcfrancis 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 思路:找规律 数字范围 数字位数 数字数量 数位数量 0-9 1 10 10 10-99 2 90 180 100-999 3 900 2700 …… …… …… …… start-end digit 9*start 9*start*digit 由此,要得到第n位对应的数字,需要分三步: 1. 确定 阅读全文
posted @ 2021-02-28 23:55 zjcfrancis 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 思路:层次遍历 序列化: 层次遍历二叉树,注意输出符合题目要求的格式 反序列化: 初始化时除去序列化数组的左右中括号,除去逗号,将其转换成一个 String 数组 这样二叉树中每个节点的索引即为数组的下标 按序列化层次遍历的思路,一层一层构建原二叉树。 代码: 序列化与反序列化的时间复杂度均为O(n 阅读全文
posted @ 2021-02-28 23:18 zjcfrancis 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 思路:动态规划 对于数组B中元素B[i],它的值等于A数组中 i 左侧元素乘积,与 i 右侧元素乘积 的乘积 画表可知: B[1]= 1* A[2]* A[3]* A[4] B[2]= A[1]* 1* A[3]* A[4] B[3]= A[1]* A[2]* 1* A[4] B[4]= A[1]* 阅读全文
posted @ 2021-02-28 18:03 zjcfrancis 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 思路1:滑动窗口 设置一个滑动窗口与一个HashSet,用set来维护一个不重复的窗口。 即当窗口右边界遇到窗口内重复的字符时,左边界移动至右边界处。 res保存最大窗口大小,即为最长无重复字符的字串长度。 代码: class Solution { public int lengthOfLonges 阅读全文
posted @ 2021-02-28 17:01 zjcfrancis 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 思路: 设置两个布尔变量 increase、decrease。 当数组中存在 A[i] < A[j]时,increase = true; 当数组中存在 A[i] > A[j]时,decrease = true; 如果A数组是单调数组,则 increase和decrease中只有一个为true,或都不 阅读全文
posted @ 2021-02-28 14:53 zjcfrancis 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 思路:动态规划 对于一个数字x1x2……xi,它的翻译方法 f( i ) 可以分为两种情况,xi-1和xi单独翻译和整体翻译。 当xi-1和xi单独翻译时,f( i ) = f ( i - 1 ) + f( i - 2 ) 当xi-1和xi整体翻译时,f( i ) = f( i - 1 ) 设动态规 阅读全文
posted @ 2021-02-28 05:02 zjcfrancis 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节 阅读全文
posted @ 2021-02-26 18:28 zjcfrancis 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 思路:贪心算法 取移动每一步的最优解,即可得到答案。 所有路径都会抵达棋盘的右下角,因此直接利用原棋盘数组记录每一格移动过去的礼物最大值,最终返回棋盘右下角元素即可。 代码: 时间复杂度O(MN),空间复杂度O(1) class Solution { public int maxValue(int[ 阅读全文
posted @ 2021-02-26 03:32 zjcfrancis 阅读(41) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页