![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
alexandsunny
这个作者很懒,什么都没留下…
展开
-
关于递归与非递归一些想法
递归与非递归写在前面现在很多公司面试的时候经常会同时考察一道题目的递归与非递归做法,往往递归做法能够一气呵成,但是非递归方法却很容易卡壳。我想大概是因为递归方法,更符合我们的思维逻辑、代码也更简洁。不像非递归方法,通常需要我们手动借助其它数据结构作为临时存储。但是递归方法,在运行的过程中也在不断的创建数据结构存储中间量,只是这个过程我们是看不见的。翻转二叉树leetcode 226翻转二叉树递归方法:深度优先遍历,二叉树的后序遍历 TreeNode* invertTree(TreeNode* r原创 2020-12-11 12:28:03 · 193 阅读 · 0 评论 -
三合一
三合一问题三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。代码class TripleInOne { vector<int> s; int stackSize; int spointer[3];publi原创 2020-11-09 17:30:31 · 162 阅读 · 0 评论 -
链表相交分析
链表相交分情况讨论:1. 两个链表不一样长1.1 有交点1.2 没有交点2. 两个链表一样长原创 2020-11-08 21:09:26 · 97 阅读 · 0 评论 -
判断字符是否唯一分析
判断字符是否唯一你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。面试官视角(LeetCode评论——cicero)如果我是面试官,我会希望看到什么?可能有点偏题,毕竟这里主要就是做题的地方。。如果我是面试官,会考虑主要考察什么,就我的工作经验看,大多数主要是招聘工程师的,面试者如果什么问题都没有,直接写个二重循环搞定,会首先给个50分,如果能写点判断字符串是否为null的,6原创 2020-11-05 15:22:09 · 168 阅读 · 1 评论 -
从树开始刷题(二)
简单题中等题94. 二叉树的中序遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/不使用递归的方法 def inorderTraversal(self, root: TreeNode) -> List[int]: self.result = [] self.nodelist = [] p = root while p != None or se原创 2020-09-09 21:38:09 · 74 阅读 · 0 评论 -
从树开始刷题(一)
二叉树第一天前言万变不离其宗,二叉树的题目大多都能归于四种遍历方式。class TreeNode: def __init__(self, value): self.val = value self.left = None self.right = None前序遍历def preOrder(root: 'TreeNode'): print(root.val) preOrder(root.left) preOrder(r原创 2020-09-05 19:43:48 · 128 阅读 · 0 评论 -
2020拼多多秋招笔试题解
T1问题:炎炎夏日,多多实在太无聊了,唯有学习才能保持内心的安宁。多多最近在学习矩阵知识,但他遇到了一类奇怪的矩阵。因此想把矩阵打印出来好好观察。对于一个n阶矩阵,首先用米字型分割线把矩阵等分为8个区域,然后从右上角开始,按照逆时针顺序给区域编号1,2,……,8思路:将矩阵分为四个block,然后循环判断,最后拼接。代码:import numpy as npdef T1(n): if n < 4: return [[0 for i in range(n)] for原创 2020-09-02 18:24:46 · 726 阅读 · 0 评论 -
2020美团秋招笔试题解
1. T1问题:小团深谙保密工作的重要性,因此在某些明文的传输中会使用一种加密策略,小团如果需要传输一个字动串S,则他会为这个字符串添加一个头部字符串和一个尾部字符串。头部字符用满足至少包含一个“MT 子序列,且以T结尾。尾部字符串需要满足至少包含一MT 序列,且以M开头。例如AAAMT和MAAAT都是一个合法的头部字符串,而MTAAA就不是合法的头部字符串。很显然这样的头尾字符串并不-定是唯一的,因此我们还有一个约束,就是S是满足头尾字符串合法的情况下的最长的字符串。很显然这样的加密策略是支持解码的,原创 2020-08-30 22:48:35 · 3123 阅读 · 1 评论 -
算法题(实习)
1. 爬楼梯 def climbStairs(self, n: int) -> int: if n == 1 or n == 2: return n a = 1 b = 2 for i in range(2, n): tmp = b b = b + a a = tmp return b2. 判断丑数 def原创 2020-08-29 09:07:17 · 193 阅读 · 0 评论 -
下一个回文数(百度实习面试)
回文数具有对称的特性,所以将数字从中间分开(左子串和右子串)来分析:A.数字为个位数,不能分子串。--------1.数字为9,直接返回11--------2.数字小于9,直接++B.数字可以分为左右子串--------1.数字有奇数位----------------a.左子串翻转后大于右字串,右子串 = 左字串翻转----------------b.左子串翻转后小于等于右字串------------------------1.中间位 == 9(需要进位),左字串加一,mid(0),右子串=原创 2020-08-27 23:38:35 · 643 阅读 · 1 评论 -
背包问题
背包问题有n件物品和容量为m的背包 给出i件物品的重量以及价值,求解让装入背包的物品重量不超过背包容量且价值最大 。1. 0/1背包问题特点:每种物品只有一件,供你选择放与不放。def Bag01(n, weights, values, cap): dplist = [[0 for j in range(cap+1)] for i in range(n)] for i in range(cap+1): if weights[0] <= i:原创 2020-08-27 13:04:12 · 159 阅读 · 0 评论 -
递归与非递归快排
快排1.递归快排def quick_sort(arr, start, end): if start >= end: return left, right, mid = start, end, arr[start] while left < right: while left < right and arr[right] >= mid: right -= 1 arr[left] = a原创 2020-08-25 12:46:37 · 187 阅读 · 0 评论 -
三种二分查找
二分查找1.基础二分(严格单调)搜索范围是闭区间[left, right],所以下面循环带等号def binary_search(arr, target): left, right = 0, len(arr)-1 while left <= right: mid = left + (right-left) // 2 if arr[mid] == target: return mid elif arr[mid原创 2020-08-22 17:31:54 · 193 阅读 · 0 评论