数据结构与算法
夏至&未至
后台开发,前端瞎倒腾,py爱好者,机器学习中...
展开
-
从上往下打印出二叉树的每个节点,同层节点从左至右打印
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2018-09-11 22:36:17 · 981 阅读 · 0 评论 -
不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路: 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2。 第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。 第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以用三步走的方式...原创 2018-09-19 23:59:51 · 2963 阅读 · 1 评论 -
输入一棵二叉树,求该树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。方法一:非递归 (层次遍历)/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeN...原创 2018-09-13 20:58:41 · 2999 阅读 · 0 评论 -
一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。方法一:最通用的,利用一个ArrayList来存储所有数组元素,遍历一次,不重复的就添加进去,重复的就去掉该元素即可public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] ,...原创 2018-09-18 22:59:05 · 2025 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。/*解题思路: * 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。 * 排序规则如下: * 若ab > ba 则 a &...原创 2018-09-13 19:41:32 · 102 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/*思路:参考剑指offer1、首先设置标志位result = false,因为一旦匹配成功result就设为true,剩下的代码不会执行,如果匹配不成功,默认返回false2、递归思想,如果根节点相同则递归调用DoesTree1HaveTree2(),如果根节点不相同,则判断tree...原创 2018-09-10 23:27:40 · 781 阅读 · 0 评论 -
复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)/**解题思路:*1、遍历链表,复制每个结点,如复制结点A得到A1,将结点A1插到结点A后面;*2、重新遍历链表,复制老结点的随机指针给新结点,如A1.random...原创 2018-09-12 23:31:52 · 156 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 思路: 递归先序遍历树, 把结点加入路径。 若该结点是叶子结点则比较当前路径和是否等于期待和。import java.util.ArrayList;...原创 2018-09-12 23:04:26 · 135 阅读 · 0 评论 -
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。(主要是考察代码的鲁棒性)
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:就是判断exponent的三种情况1、大于02、等于03、小于0 详情见代码: ...原创 2018-09-06 23:12:09 · 190 阅读 · 0 评论 -
位与问题(如判断是不是幂,求1的个数)
题目描述1输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:时间复杂度是O(n),n为二进制表示的位数 用1(1自身左移运算,其实后来就不是1了)和n的每位进行位与,来判断1的个数代码: 题目描述2判断一个数是不是幂(只有一个1)。n=n&(n-1);if(n==0) 则是幂否则不是幂...原创 2018-09-06 22:45:16 · 185 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 方法一: 快排,然后找最小的数字 时间复杂度:O(nlog(n)),不行!没有用到旋转...原创 2018-09-06 22:32:26 · 116 阅读 · 0 评论 -
面试中算法总结
本次Chat,主要从知名互联网公司在面试中喜欢提问的算法入手,给大家详细阐述讲解面试中的高频率算法题。涉及到的算法题主要包括:排序和查找、链表、二叉树、队列、堆栈、字符串以及数组等方面。如果你想在来年的校园招聘中拿下一线互联网的Offer,那么本次Chat将助你玩转算法面试~面试,是大家从学校走向社会的第一步。大型互联网公司的校园招聘,从形式上说,面试一般分为2-3轮技术面试+1轮HR面试。但...转载 2018-09-18 10:24:58 · 23850 阅读 · 2 评论 -
调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解法一:该解法实际上不能通过运行,原因在于改变了原来奇数之间以及偶数之间的相对位置关系。方法二:两次遍历+两个数组/* 额外用三个数组把,两个数组来存奇数和偶数,一个数据用于存储最后的大数...原创 2018-09-08 23:55:23 · 540 阅读 · 0 评论 -
漫画算法:什么是红黑树?(通俗易懂)
来源:伯乐专栏作者/玻璃猫,微信公众号 - 程序员小灰 ————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:...转载 2018-09-28 17:30:53 · 3010 阅读 · 3 评论