数据结构与算法
文章平均质量分 60
sheldonwong
这个作者很懒,什么都没留下…
展开
-
LeetCode2:Add Two Numbers
题目You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and原创 2017-06-30 16:46:33 · 175 阅读 · 0 评论 -
Leetcode94-Binary Tree Inorder Traversal (144,145)
题目:二叉树中序遍历思路:这个主要是递归,但是带返回值的递归怎么处理?可以通过指针,直接操作内存/引用,就不用返回值了代码:public class Solution94 { //思考:带返回值的递归函数 //如果不想带返回值,可以通过函数操作指针来实现 public List inorderTraversal(TreeNode root) {原创 2017-12-28 10:28:57 · 140 阅读 · 0 评论 -
Leetcode341-Flatten Nested List Iterator
题目:设计一个迭代器,输入形如 [[1,1],2,[1,1]] 重复调用next直到hasNext返回false,next返回的顺序应该是[1,1,2,1,1]输入[1,[4,[6]]] 返回[1,4,6]调用形式* NestedIterator i = new NestedIterator(nestedList);* while (i.hasN原创 2017-12-28 10:35:50 · 221 阅读 · 0 评论 -
Leetcode102-Binary Tree Level Order Traversal(107,103,199)
题目二叉树层次遍历For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]]思路原创 2017-12-28 10:40:13 · 155 阅读 · 0 评论 -
动态规划1-Leetcode70-Climb Stairs
1. 题目青蛙每次可以跳一个台阶或者两个台阶,问跳上n个台阶有多少种跳法2. 思路自顶向下思考:假如是10层台阶,那么我们只需要知道跳上9层台阶和8层台阶各有多少种跳法,要知道跳上9层台阶有多少种跳法,我们只需要知道跳上8层台阶和7层台阶有多少种跳法,要知道跳上8层台阶有多少种跳法,我们只需要知道跳上7层台阶和6层台阶有多少种跳法,依次类推...跳上第2层台阶有2种...原创 2018-01-14 15:52:18 · 174 阅读 · 0 评论 -
动态规划2-Leetcode343-integerBreak
1. 题目将一个整数划分成若干个整数的和,使得这若干个整数乘积最大。2. 思路这个题可以用递归去解,因为各种划分可以表示成一棵递归树。自顶向下的递归:先来看一个简单的例子,当n等于4时:可以使用动态规划解决的问题,一般都具有重叠子问题,我们只需要求出这些重叠子问题的最优解就可以了。什么是子问题?要求出n的integerBreak,那么只需要求出i原创 2018-01-14 16:13:44 · 208 阅读 · 0 评论 -
算法心得-树和递归
一直觉得算法挺难的,也不知道问题出在哪,想了下,其实可以分为两个方面1. 分析问题2. 将分析转化为代码的能力 比如整数划分问题,题目是把一个整数划分成若干个数,使得这若干个数的乘积最大上面是分析的问题,下面分析映射到的代码 for i in range(n): res = max(res,i*(n-i),i*func(n-i))可以看到,每个分...原创 2018-08-26 23:59:47 · 204 阅读 · 0 评论 -
数据结构与算法-图
1. 图图是由点和变构成的 图的分类无向图有向图 无权图有权图 稀疏图稠密图 图的连通性:连通分量简单图:没有平行边和自环边 2. 图的存储邻接矩阵无向图有向图 邻接表 如何将一个图转换成计算机课存储的方式?1. 把节点列表列出来2. 在邻接表中填邻接节点(在邻接矩阵中填充邻接...原创 2018-10-11 10:58:46 · 156 阅读 · 0 评论 -
LeetCode11-盛水最多的容器
题目:给定一个高度数组,找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。思路1. 暴力解法由于题目中,要求的是找出其中的两条线,与x轴构成的容器,也就是说,找出数组中所有可能的两个高度的组合,很显然有种组合。具体的遍历思路[0] [1-n][1] [2-n]...代码:class Solution { public int ...原创 2018-10-04 08:21:02 · 163 阅读 · 0 评论 -
Leetcode71- Simplify Path
1. 题目:给定一个Unix系统下的路径,简化这个路径。如 /home/ ,简化后为 /home如 /a/./b/../../c/ ,简化后为 /c2. 思路:这还是一个入栈出栈匹配问题构造无效字符集合 = {"",".",".."}将字符串split成字符串数组遍历字符串数组{如果元素等于“..”且栈不为空出栈一个元素如果元素不原创 2017-12-28 10:23:20 · 160 阅读 · 0 评论 -
算法-排序-快速排序
1. 主要思想快速排序的思想其实很简单,就是分治+递归。2. step by step 假设要排序的序列为a 1)先随机在序列a中选取一个元素pivot = a[i] 2)将小于a[i]的元素移动到a[i]的左边,大于a[i]的元素移到a[i]的右边 3)递归的对a[i]的左右两边执行1、2过程 4)直到每个partition的size为1,原创 2017-12-17 16:10:37 · 343 阅读 · 0 评论 -
算法-全排列
1. 全排列的定义例如123它的全排列包括1231322132313123212. 思路通过上面的例子,我们可以看到,只需要分别把每个元素放到前面,再递归的对后面的n-1个元素进行全排列,直到需要全排列的元素个数为1,此时全排列即为它本身。关键代码:void perm(){//递归终止条件if(p == q原创 2017-12-19 11:21:36 · 160 阅读 · 0 评论 -
LeetCode3-Longest Substring Without Repeating Characters
1. 问题:Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the a原创 2017-07-01 21:53:47 · 138 阅读 · 0 评论 -
分治法:二分搜索
二分搜索技术是利用分治法思想的的典型例子问题描述:给定已经排好序的n个元素a[0:n-1],要在这n个元素中找出一个特定元素x的下标首先比较容易想到的是遍历这个n个元素,依次寻找,这样做的话,最坏情况下需要做n次比较,时间复杂度为O(n),这种方法没有很好的利用排序这个性质。其次就是二分搜索技术,二分搜索技术很好的利用已排好序这个性质,采用分支策略,可以在O(l原创 2017-07-04 22:39:39 · 1523 阅读 · 0 评论 -
LeetCode1-Two Sum
1. 题目描述Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may no原创 2017-06-27 17:17:14 · 184 阅读 · 0 评论 -
记录一下华为笔试题目
1. 输入两个N位数字,判断这两个N位数字连续相同的位数。例如123,124,有连续两位两位相同。123345,123346,有4位连续相同。要求输出连续相同的位数最多的。如果输入是非数字或,则输出-12. 模块间的依赖关系是否成环,如果成环则则节点值为true,如果不成环则节点值为false 输入形如{0x01,0x02}{0x02,0x03}{0x0原创 2017-08-16 22:18:21 · 1551 阅读 · 0 评论 -
算法1-标准输入输出(键盘&终端)
算法笔试一般有两种提醒,一种是直接在函数参数中给出要处理的数据,然后通过返回值返回结果。另外一种是通过输入给出要处理的数据,通过输出给出结果。所以有必要掌握常用语言的输入输出,下面介绍4中常用语言的输入输出(Java,C,C++,Python)在介绍各种语言的输入输出前,可以先来看一下算法笔试中题目的输入输出一般分为几种1. 单个元素的输入(单个字符串,单个数字,单行)2.原创 2017-08-20 22:48:30 · 876 阅读 · 0 评论 -
Leetcode20-Valid Parenthesis
给定一个字符串,只包含 ( , [ , { , ) , ] , } ,判定字符串中的括号匹配是否合法。如 ”()” , “()[]{}” 是合法的如 “(]”,”([)]” 是非法的 思路:使用栈解决遍历字符串如果是左括号,就入栈否则,判断栈顶元素和当前元素是否匹配代码:class Solution { public static boolean原创 2017-12-23 22:28:22 · 134 阅读 · 0 评论 -
算法0-介绍
由于要找工作,最近刷了点题,看了点书,做了些校招笔试,总结一些算法笔试的要点吧。1. 题目笔试的时候,第一步还是要认真读题,这个没什么好说的,题都不懂是做不下去的。2. 解题思路在读完题目的时候,不要急着动手写代码。这一步要做的是理清思路,可以借助画图等工具。这一步的最终目标是得到算法流程图。3. 输入输出笔试的时候通常会有两种类型,一种是不原创 2017-08-20 14:25:58 · 261 阅读 · 0 评论 -
Leetcode150-逆波兰表达式
题目150 逆波兰表达式逆波兰表达式求值。给定一个数组,表示一个逆波兰表达式。求其值。如:[ “2”,“1”,“+”,“3”,“*” ],表示 (2+1)*3 = 9如:[ “4”,“13”, “5”, “/” , “+” ],表示4+(13/5) = 6思路遍历数组{如果元素是数字(包括负数),入栈如果是运算符,就出栈两个数字,计算完成后接着入栈原创 2017-12-26 21:10:20 · 354 阅读 · 0 评论 -
Leetcode382-随机抽样
Given a singly linked list, return a random node's value from the linked list. Each node must have the same probability of being chosen.Follow up:What if the linked list is extremely large and its ...原创 2018-10-27 16:27:18 · 392 阅读 · 0 评论