
数据结构
AndrewGSD
通其变,天下无弊法;执其方,天下无善教。-隋·王通《中说·周公》
展开
-
华为诺亚方舟实验室实习面试
前言记录一下自己遇到的实习面试经历,希望能对后来人有用。面试总共分为两轮:第一轮是项目面试,主要讲自己做的研究工作以及论文相关情况;第二轮主要是CodingTest测试;这里主要讲讲自己的CodingTest,其实代码测试的题目和LeetCode差不多,水平差不多,题目可能不一定相同。给了我两个题目,一道是困难,一道是简单的。一、题目说明题目1:A为一个十进制数(以整数为例),k位,k<100。求B使得B为大于A的最小整数,且A各位的和等于B各位的和。题目2:给一定数量的信封,带有整数对原创 2020-12-27 19:45:24 · 3347 阅读 · 6 评论 -
LeetCode不同路径问题求解(62)(python和Java实现)
一、题目说明一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 -> 向右示例 3:输入:m = 7,原创 2020-12-09 22:51:16 · 341 阅读 · 0 评论 -
LeetCode计数质数求解(204)(Python和C++实现)
一、题目说明统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 106二、代码实现(1)python实现厄拉多塞筛法class Solution(object): def countPrimes(self, n): """ :原创 2020-12-03 23:22:27 · 222 阅读 · 0 评论 -
LeetCode排序链表(148)(Python和Java实现)
一、题目描述提示:链表中节点的数目在范围 [0, 5 * 104] 内-105 <= Node.val <= 105二、代码实现(1)Python实现方法一"""在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。"""class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def so原创 2020-11-27 20:45:25 · 323 阅读 · 0 评论 -
LeetCode对链表进行插入排序(147)(Python, Java,C++多个版本实现)
一、题目描述对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1-原创 2020-11-24 22:54:46 · 121 阅读 · 0 评论 -
LeetCode有效的字母异位词(242)(Python和C++实现)
一、题目说明给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。二、代码实现(Python)class Solution(object): def isAnagram(self, s, t): """ :type s:原创 2020-11-24 20:40:40 · 192 阅读 · 0 评论 -
LeetCode完全二叉树的节点个数求解(222)(Python和Java实现)
一、题目说明给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:1/ 2 3/ \ /4 5 6输出: 6二、Python代码实现# Definition for a binary tree node.# class TreeNode(object):# def原创 2020-11-24 20:25:16 · 156 阅读 · 0 评论 -
LeetCode加油站(134)思路讲解和不同方法的Python实现
一、题目说明在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油cost[i]升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例1:输入:gas = [1,2,3,4,5]cost = [...原创 2020-11-20 21:27:29 · 342 阅读 · 0 评论 -
LeetCode 移动零(283)(Python实现)
一、题目说明给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。二、代码实现实现方法一:class Solution(object): def moveZeroes(self, nums): """ :type nums: List[int]原创 2020-11-20 13:57:11 · 231 阅读 · 0 评论 -
LeetCode搜索插入位置求解(35题)(Python和C++实现)
一、题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0二、解决办法1. 解决办法一:采用暴力求解的方式,算法复杂度O(N) (Pytho..原创 2020-11-19 20:27:55 · 249 阅读 · 2 评论 -
最长上升子序列算法(详细讲解+多个版本实现(C/C++和Python))
什么是最长上升子序列(LIS)问题?【题目描述】给定N个数,求这N个数的最长上升子序列的长度。【样例输入】72 5 3 4 1 7 6【样例输出】4什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段不断严格上升的部分,它不一定要连续。就像这样:2,3,4,7和2,3,4,6就是序列2 5 3 4 1 7 6的两种选取方案。最长的长度是4.更直接的描述:首先需要设计状态,以及状态转移方程状态转移方程的推导状态转移方程的详细推导C++代码实现总结7. .原创 2020-11-18 22:10:44 · 1946 阅读 · 0 评论 -
break,continue和return的区别
return 可以直接结束整个方法,不管里面有多少个循环;continue 可以结束本次循环,执行下面的语句;break 可以结束本层循环;如果外面有多层循环,也需要结束的时候,以java为例,可以设置标识符,比如在多层循环的外面,设置一个标识符,然后在需要跳出循环的地方也设置标识符,如下面的outer就是标识符。public class BreakTest{ public static void main(String[] args){ // 外层循环,outer作为标识符 .原创 2020-11-16 23:06:47 · 101 阅读 · 0 评论