leetcode
葡萄味儿的柚子
这个作者很懒,什么都没留下…
展开
-
根据二叉搜索树的后序遍历重建二叉树/C++非递归遍历二叉树
二叉搜索树后序遍历序列这是一种递归的算法思想,后续再优化持续更新。。#include<iostream>using namespace std;struct BiTree{ int NodeData = 0; struct BiTree *pLeft = nullptr; struct BiTree *pRight = nullptr;};//二叉搜索树是指所有左子树的节点值均小于根节点值//所有右子树的节点值均大于根节点值 //现在已知二叉搜索树后序遍历序列[2,4,3原创 2020-08-23 19:26:29 · 516 阅读 · 0 评论 -
动态规划--背包问题,最小路径和,不同路径总数
背包问题笔记描述:编号 1 2 3 4体积 2 3 4 5价值 3 4 5 6放入一个体积为8的背包,怎样使背包所装东西的价值最大背包容量从0以1单位递增,当前背包容量下,两个问题考虑:放不放的下当前物品;放得下的话,放不放这个物品,放了的价值就是把这个物品所占容积减出来剩下物品实现的价值加上当前放进去物品的价值,不放的话就是之前已经放进去的物品的总价值放个视频链接:背包问题讲解在这里插入代码片include<iostream>using namespace std;cons原创 2020-08-02 21:28:12 · 327 阅读 · 0 评论 -
leetcode打家劫舍(数组/环状排列/二叉树)--想哭的动态规划
打家劫舍1 数组你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。来源:力扣(LeetCode)链接:打家劫舍题记简单来说就是打劫一排住户,但不能打劫邻近的住户,求打劫最大值定义dp[]数组用来存储最大抢劫量,其中dp[i]用来表示抢劫到第i个住户时的最大量原创 2020-08-06 10:18:12 · 501 阅读 · 0 评论 -
剑指10-斐波那契数列(著名的兔子繁殖问题)C++
斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5输出:5来源:力扣原创 2020-07-31 21:55:41 · 791 阅读 · 0 评论 -
剑指09-两个栈实现队列--C++
两个栈实现队列题目描述:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false来源:力扣(L原创 2020-07-29 21:32:05 · 129 阅读 · 0 评论 -
剑指07-重建二叉树递归Python
重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7来源:力扣(LeetCode)链接:重建二叉树题记递归解析:递推参数: 前序遍历中根节点的索引pre_root、中序遍历左边界in_left、中序遍历右边界in_right。原创 2020-07-28 17:15:14 · 139 阅读 · 0 评论 -
剑指05-替换字符串的空格-C++报错‘std::logic_error‘
替换字符串的空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”来源:力扣(LeetCode)链接:替换字符串的空格题记:先遍历一遍字符串,统计这个字符串的空格数,由此我们可以得到新的字符串的总长度。每替换一个空格,字符串长度增加2。从后往前遍历,一个指针P1指向原来字符串的末尾,另一个指针P2指向新的字符串的末尾。P1向前遍历,逐个将字符复制到P2所指位置直到遇到空格,把P1向前移原创 2020-07-27 13:53:32 · 510 阅读 · 0 评论 -
剑指06-从尾到头打印链表--递归-栈-C++/Python
从尾到头打印链表题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]题记:从尾到头,第一想到的数据结构应该是栈,栈的特点是先入后出,所以先来复习一下栈的基本操作:操作描述s.empty()如果栈为空返回true,否则返回falses.size()返回栈中元素的个数s.pop()删除栈顶元素但不返回其值s.top()返回栈顶的元素,但不删除该元素s.pus原创 2020-07-26 11:12:14 · 173 阅读 · 0 评论 -
剑指04-二维数组中的查找C++/python
二维数组中的查找题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 t原创 2020-07-25 11:06:47 · 104 阅读 · 0 评论 -
联发科嵌入式开发笔试-一年中的第几天
一年中的第几天输入格式为2020-01-03;输出是第3天,题目提示了闰年的计算方法为公历年份是4的倍数的,且不是100的倍数,为普通闰年,或者是400的倍数为世纪闰年。题记:天数从一月开始算,后面逐天累加,特殊的闰年在2月多了一天。1.所以首先我们自己记录一个正常年份(非闰年)的天数累加表以便我们在知道月份和天数的情况下直接推算出这是一年中的第几天daycount = [0,31,59,90,120,151,181,212,243,273,304,334]2.当判断该年为闰年,就要多加一天,在哪原创 2020-07-23 22:02:50 · 748 阅读 · 0 评论 -
剑指03-数组中重复的数字-力扣
返回数组中重复的数字在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3来源:力扣(LeetCode)链接:数组中重复的数字题记:有题目要求时间复杂度O(n),空间复杂度O(1),侠义的理解为只遍历一次,不申请新的空间,好吧。如果能排序的话就很快搞定了,那么顺着这个思路走,把数字归为到对原创 2020-07-22 22:13:20 · 163 阅读 · 0 评论 -
力扣双指针经典例题,移动0,去重,装最多水的容器笔记
#移动0给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。所有非0放在左边,0放在右边,我们需要两个指针i,j,j考虑成存放非0元素,i去遍历;当遇到nums[i]为非0,就将nums[i]和nums[j]交换。这一步草稿纸上画一画就很清晰了,或者去看力扣上的动画解析。python代码:class Solutio原创 2020-05-23 13:58:28 · 213 阅读 · 0 评论