剑指Offer中的动态规划除了一题hard(正则表达式匹配)都比较简单。 连续子数组的最大和 这道题可以作为线性dp的模板。 用dp[i]表示以元素nums[i]为结尾的连续子数组最大和。 当以nums[i-1]为结尾的数组和(dp[i-1])大于0,对于以nums[i]为结尾的子数组(dp[i]) ...
分类:
其他好文 时间:
2020-07-31 22:58:15
阅读次数:
102
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 心得:两数相加还能这么表示 1 #include <iostream> 2 3 using namespace std; 4 5 class Solution 6 { 7 public: 8 int Add(i ...
分类:
编程语言 时间:
2020-07-29 21:55:54
阅读次数:
94
本题 题目链接 题目描述 我的题解 二分法 思路分析 排序数组中的搜索问题,首先想到二分法 当nums[center] > center 时,缺少的数在左区间 当nums[center] = center 时,缺少的数在右区间 代码如下 public int missingNumber(int[] ...
分类:
其他好文 时间:
2020-07-29 21:22:09
阅读次数:
74
##题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 **示例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ###方式一: 迭代法(头插法): 画图分析:设置一个前节点为null,再用临时变量保存当前节点的下一个节点 ...
分类:
其他好文 时间:
2020-07-29 14:40:11
阅读次数:
54
本题 题目链接 题目描述 我的题解 方法一:使用库函数 s.substring() 代码如下 public String reverseLeftWords(String s, int n) { return s.substring(n, s.length()) + s.substring(0, n) ...
分类:
其他好文 时间:
2020-07-29 12:40:19
阅读次数:
71
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] ...
分类:
其他好文 时间:
2020-07-29 10:25:20
阅读次数:
51
// C++ #include<iostream> using namespace std; //链表的定义 struct ListNode { int val; ListNode* next; ListNode(int n) :val(n), next(nullptr) {} }; //链表的打印 ...
分类:
其他好文 时间:
2020-07-29 09:59:12
阅读次数:
68
本题 题目链接 题目描述 我的题解 方法一:库函数split() 要注意str.split()函数: 字符串str前有 n 个空格时,分割出来的字符串列表中会多出 n 个空字符串; 字符串str某两个字符串中有 n 个空格,分割出的字符串列表会多 n-1 个空字符串。 字符串str最后有空格,分割出 ...
分类:
其他好文 时间:
2020-07-28 22:25:39
阅读次数:
63
动态规划整体思路是用递归问题求解,然后对递归过程中存在的大量重叠子问题进行优化, 自顶向下的求解的思路为记忆化搜索,自底向上的解决问题的思想就是动态规划,自顶向下的求解通常更好理解,我们理解后在改成自底向上的动态规划求解; 剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那 ...
分类:
编程语言 时间:
2020-07-28 14:17:59
阅读次数:
78
本题 题目链接 题目描述 我的题解 双指针 思路分析 因为该数组是递增数组,所以我们可以用双指针法。 声明指针left 和 right分别指向数组的头(数组下标为0)和尾(数组下标为length-1) 循环搜索:当两指针相遇时,结束循环 计算nums[left]和nums[right]的和 s 若s ...
分类:
其他好文 时间:
2020-07-28 14:05:28
阅读次数:
70