LeetCode
The C
Don't tell me the sky is the limit when there are footprints on the moon.
展开
-
Leetcode126——给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。
题目:给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 be...原创 2019-10-26 21:48:20 · 2541 阅读 · 0 评论 -
动态规划——扰乱字符串问题
给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树。下图是字符串 s1 = “great” 的一种可能的表示形式。在扰乱这个字符串的过程中,我们可以挑选任何一个非叶节点,然后交换它的两个子节点。例如,如果我们挑选非叶节点 “gr” ,交换它的两个子节点,将会产生扰乱字符串 “rgeat” 。我们将 "rgeat” 称作 “great” 的一个扰乱字符串...原创 2019-10-26 21:29:28 · 158 阅读 · 0 评论 -
数据结构——(树与二叉树)给定一棵二叉树,假设从二叉树的右侧观察它,将观察的结点按照从上到下输出
题目:给定一棵二叉树,假设从二叉树的右侧观察它,将观察的结点按照从上到下输出思想:利用层次遍历,从上到下依次输出这一层的最后一个元素即可,注意将层数与结点一起入队代码展示:void fromTheSide(BiTree T,SqQueue &Q){ if(T==NULL) { return; } EnQueue(Q,T,1); ...原创 2019-09-04 14:55:14 · 545 阅读 · 0 评论 -
数据结构(树与二叉树)——给定一棵二叉树,将该二叉树就地转化为单链表,单链表中结点顺序为二叉树前序遍历顺序
题目:给定一棵二叉树,将该二叉树就地转化为单链表,单链表中结点顺序为二叉树前序遍历顺序思想:如果右子树不为空,则右子树最后肯定为左子树最后一个靠右的孩子节点的右子树,而左子树最后成为整棵树的右子树。这样,首先判断左子树是否为空,不为空就寻找到树根的左孩子节点,然后寻找该节点是否有右孩子,如果有继续寻找,直到找到属于叶子节点的右孩子,此时,该节点的右子树“指向”当前树的右子树,并将当前左子树变为树...原创 2019-09-03 19:48:10 · 234 阅读 · 0 评论 -
数据结构——(树与二叉树)已知二叉树,找出二叉树中给定两个结点的最近公共祖先
题目:已知二叉树,找出二叉树中给定两个结点的最近公共祖先思想:遍历二叉树,利用栈保存结点,然后对栈进行查找代码展示:void findWay(BiTree T,Stack &S,int x,int &finish){ int e; if(T==NULL || finish==1) { return ; } Push(S...原创 2019-09-03 15:52:40 · 448 阅读 · 0 评论 -
数据结构——(树与二叉树)给定一个二叉树和整数sum,找出所有根节点到叶子结点的路径,这些路径上的结点值累加和为sum
题目:给定一个二叉树和整数sum,找出所有根节点到叶子结点的路径,这些路径上的结点值累加和为sum思想:遍历二叉树的思想,结合栈的使用代码展示:void EqualSum(BiTree T,Stack &S,int sum,int &x){ if(T==NULL) { return; } Push(S,T->data);...原创 2019-09-03 14:44:19 · 1277 阅读 · 1 评论 -
LeetCode61——给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
题目:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。思想:假设n个元素,即把后面n-k个元素依次头插即可代码展示:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */st...原创 2019-08-18 15:18:12 · 3007 阅读 · 0 评论 -
LeetCode106:数据结构(树)——从中序与后序遍历序列构造二叉树
题目:思想:递归,注意细节代码展示:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */struct TreeNode* buildTree...原创 2019-08-21 19:13:08 · 98 阅读 · 0 评论 -
LeetCode19——给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点(给定的 n 保证是有效的,你能尝试使用一趟扫描实现吗?)
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点(给定的 n 保证是有效的,你能尝试使用一趟扫描实现吗?)思想:采取双重遍历肯定是可以解决问题的,但题目要求我们一次遍历解决问题,那我们的思路得发散一下。我们可以设想假设设定了双指针 p 和 q 的话,当 q 指向末尾的 NULL,p 与 q 之间相隔的元素个数为 n 时,那么删除掉 p 的下一个指针就完成了要求。代码展示:...原创 2019-08-18 17:02:06 · 557 阅读 · 0 评论 -
LeetCode06——Z字形输出问题
题目:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数。...原创 2019-07-24 21:50:44 · 487 阅读 · 0 评论 -
LeetCode292之Nim游戏
题目:你和你的朋友,两个人一起玩 Nim游戏:桌子上有一堆石头,每次你们轮流拿掉 1 至 3 块石头,拿掉最后一块石头的人就是获胜者,你作为先手。你们是聪明人,每一步都是最优解。编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false思想:如果堆中有 4 块石头,那么你永远不会赢得比赛;因为无论你拿走 1 块、2 块还是 3 块石头,最后一块石头...原创 2019-07-24 20:57:52 · 229 阅读 · 0 评论 -
LeetCode11完整代码,贪心算法经典问题
题目:给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。输入: [1,8,6,2,5,4,8,3,7]输出: 49思想:暴力解法,逐一遍历求值比...原创 2019-07-23 22:15:36 · 424 阅读 · 0 评论 -
LeetCode02完整代码(需要提交的略作修改即可)
题目:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 +...原创 2019-07-23 21:48:33 · 750 阅读 · 0 评论