数据结构
在路上&
这个作者很懒,什么都没留下…
展开
-
阿里面试:合并K个有序链表
合并K个有序链表首先看一下合并两个有序链表/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { publ...原创 2020-02-07 18:32:21 · 267 阅读 · 0 评论 -
Hash
原创 2019-07-28 21:18:16 · 84 阅读 · 0 评论 -
NowCoder:矩形覆盖
问题描述:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?暴力破解法: if(target<=0) return 0; if(target<=2) return target; if(target>=3) return RectCover(target-1)+Rec...原创 2019-07-12 00:15:06 · 105 阅读 · 0 评论 -
NowCoder:链表中倒数第k个结点
class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } int i = 0; ListNode p,q; q = p =head;...原创 2019-07-14 22:27:57 · 94 阅读 · 0 评论 -
LeetCode:两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:...转载 2019-07-02 00:16:03 · 92 阅读 · 0 评论 -
Leetcode:汉明距离
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)上面的加粗数字指出了对应二进制位不同的位置。执行用时 : 1 ms, 在Hamming Distance的Jav...原创 2019-05-13 17:21:24 · 133 阅读 · 0 评论 -
LeetCode:有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: falsepublic static boolean isAnagram(String s, String t) { //定义两个数组,分别存...原创 2019-04-20 01:16:02 · 99 阅读 · 0 评论 -
LeetCode:二进制求和
二进制求和难度:简单给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"说转换成整数后加再转换成二进制的可以去XXOO了,你开心就好执行用时 : 4 ms, 在Add Bina...原创 2019-04-24 18:22:52 · 170 阅读 · 0 评论 -
LeetCode:合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,...原创 2019-04-23 17:24:22 · 78 阅读 · 0 评论 -
Leetcode:爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. ...原创 2019-05-01 19:08:53 · 123 阅读 · 0 评论 -
二叉树创建
结点定义: typedef struct node{ int data; struct node * left; struct node * right; }BTNode;创建一颗二叉树:BTNode * createBinaryTree(int a[],int n)//创建二叉树 { BTNode * p,* c,* pa,* root; r...原创 2019-04-02 16:41:03 · 120 阅读 · 0 评论 -
八皇后算法(回溯)
算法描述: 八皇后是一道很具典型性的题目。它的基本要求是这样的:在一个8*8的矩阵上面放置8个物体,一个矩阵点只允许放置一个物体,任意两个点不能在一行上,也不能在一列上,不能在一条左斜线上, 当然也不能在一条右斜线上。八皇后问题,是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能...原创 2019-03-17 16:06:21 · 1205 阅读 · 0 评论 -
链表的定义及其简单解释
链表1.存储方式:(1)顺序存储:以连续的存储单元进行存储(2)链式存储:存储单元不联系2.链式存储:(1)不可计算存储单元的地址,只能以存储的形式来完成(2)结构:①结点的结构:数据域(data) 指针域(next)②数据域:存储本结点的数据③指针域:存放下一个结点的地址④定义:struct node{ int data; struct node * next;...原创 2019-03-11 17:17:29 · 11144 阅读 · 2 评论 -
栈(Stack)的解释及简单应用
栈的定义:栈是限定在表尾进行插入和删除操作的线性表,它是一种数据结构,其数据元素之间的关系呈线性关系。2.结构:3.栈的操作:(1)入栈:向栈口存储数据元素(push)(2)出栈:从栈中去数据元素(pop)(3)栈顶指针(top):用来指向最后一个入栈元素(4)入栈操作: ①栈满不可入栈:top=SIZE-1(上溢) ②入栈(未满):top=top+1,S[top]...原创 2019-03-10 15:58:45 · 430 阅读 · 0 评论