当前位置: 首页 > 编程日记 > 正文

数据结构与算法:08 Leetcode同步练习(三)

目录

  • 题目01:合并两个有序链表
  • 题目02:删除排序链表中的重复元素
  • 题目03:环形链表
  • 题目04:反转链表
  • 题目05:删除链表中的节点
  • 题目06:两数相加
  • 题目07:删除链表的倒数第N个节点
  • 题目08:两两交换链表中的节点
  • 题目09:旋转链表
  • 题目10:合并K个排序链表

题目01:合并两个有序链表

  • 题号:21
  • 难度:简单
  • https://leetcode-cn.com/problems/merge-two-sorted-lists/

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

参考代码

  • 执行结果:通过
  • 执行用时:108 ms, 在所有 C# 提交中击败了 83.80% 的用户
  • 内存消耗:25.9 MB, 在所有 C# 提交中击败了 5.85% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution
{public ListNode MergeTwoLists(ListNode l1, ListNode l2){ListNode pHead = new ListNode(int.MaxValue);ListNode temp = pHead;while (l1 != null && l2 != null){if (l1.val < l2.val){temp.next = l1;l1 = l1.next;}else{temp.next = l2;l2 = l2.next;}temp = temp.next;}if (l1 != null)temp.next = l1;if (l2 != null)temp.next = l2;return pHead.next;}
}

题目02:删除排序链表中的重复元素

  • 题号:83
  • 难度:简单
  • https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

思路:利用双指针的方式。

p1作为前面的指针探路,p2作为后面的指针跟进,如果遇到重复元素,p2.next跳过去,p1跑完整个链表所有重复元素都被摘下来。

参考代码

  • 执行结果:通过
  • 执行用时:160 ms, 在所有 C# 提交中击败了 5.23% 的用户
  • 内存消耗:25.9 MB, 在所有 C# 提交中击败了 5.72% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/public class Solution
{public ListNode DeleteDuplicates(ListNode head){if (head == null)return head;ListNode p1 = head.next;ListNode p2 = head;while (p1 != null){if (p1.val == p2.val)p2.next = p1.next;elsep2 = p2.next;p1 = p1.next;}return head;}
}

题目03:环形链表

  • 题号:141
  • 难度:简单
  • https://leetcode-cn.com/problems/linked-list-cycle/

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是 -1,则在该链表中没有环。

示例 1

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

进阶

你能用 O(1)(即,常量)内存解决此问题吗?

思路:利用双指针的方式。

通常情况下,判断是否包含了重复的元素,我们使用Hash的方式来做。对于单链表的这种场景,我们也可以使用双指针的方式。

第一个指针 p1 每次移动两个节点,第二个指针 p2 每次移动一个节点,如果该链表存在环的话,第一个指针一定会再次碰到第二个指针,反之,则不存在环。

比如:head = [1,2,3,4,5],奇数

p1:1   3   5   2   4   1
p2:1   2   3   4   5   1

比如:head = [1,2,3,4],偶数

p1:1   3   1   3   1
p2:1   2   3   4   1

参考代码

  • 状态:通过
  • 执行用时: 112 ms, 在所有 C# 提交中击败了 98.43% 的用户
  • 内存消耗: 24.9 MB, 在所有 C# 提交中击败了 5.13% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public bool HasCycle(ListNode head) {ListNode p1 = head;ListNode p2 = head;while (p1 != null && p1.next != null){p1 = p1.next.next;p2 = p2.next;if (p1 == p2)return true;}return false;}
}

题目04:反转链表

  • 题号:206
  • 难度:简单
  • https://leetcode-cn.com/problems/reverse-linked-list/

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

进阶:

你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

思路:利用双指针的方式。

p1作为前面的指针探路,p2作为后面的指针跟进,顺着链表跑一圈,搞定问题。

参考代码

  • 状态:通过
  • 执行用时: 116 ms, 在所有 C# 提交中击败了 97.50% 的用户
  • 内存消耗: 23.3 MB, 在所有 C# 提交中击败了 5.26% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/public class Solution
{public ListNode ReverseList(ListNode head){if (head == null || head.next == null)return head;ListNode p1 = head;ListNode p2 = null;while (p1 != null){ListNode temp = p1.next;p1.next = p2;p2 = p1;p1 = temp;}return p2;}
}

题目05:删除链表中的节点

  • 题号:237
  • 难度:简单
  • https://leetcode-cn.com/problems/delete-node-in-a-linked-list/

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

现有一个链表 – head = [4,5,1,9],它可以表示为:

示例 1:

输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例 2:

输入: head = [4,5,1,9], node = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

说明:

  • 链表至少包含两个节点。
  • 链表中所有节点的值都是唯一的。
  • 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
  • 不要从你的函数中返回任何结果。

思路: 这道题没有给出链表的头节点,而是直接给出要删除的节点,让我们进行原地删除。我们对于该节点的前一个节点一无所知,所以无法直接执行删除操作。因此,我们将要删除节点的 next 节点的值赋值给要删除的节点,转而去删除 next 节点,从而达成目的。

参考代码

  • 状态:通过
  • 41 / 41 个通过测试用例
  • 执行用时: 120 ms, 在所有 C# 提交中击败了 99.55% 的用户
  • 内存消耗: 24.4 MB, 在所有 C# 提交中击败了 5.88% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/public class Solution
{public void DeleteNode(ListNode node){ListNode temp = node.next;while (temp != null){node.val = temp.val;temp = temp.next;if (temp != null){node = node.next;}}node.next = null;}
}

题目06:两数相加

  • 题号:2
  • 难度:中等
  • https://leetcode-cn.com/problems/add-two-numbers/

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807

示例 2

输入:(3 -> 7) + (9 -> 2)
输出:2 -> 0 -> 1
原因:73 + 29 = 102

思路:模仿我们小学时代学的加法运算。个位相加超过十进一,十位相加有进位则加上进位,依次类推。

参考代码:

  • 状态:通过
  • 执行用时: 144 ms, 在所有 C# 提交中击败了 97.98% 的用户
  • 内存消耗: 26.7 MB, 在所有 C# 提交中击败了 5.07% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution 
{public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {ListNode result = new ListNode(-1);ListNode l3 = result;int flag = 0;while (l1 != null && l2 != null){int a = l1.val;int b = l2.val;int c = a + b + flag;l3.next = new ListNode(c%10);flag = c >= 10 ? 1 : 0;l1 = l1.next;l2 = l2.next;l3 = l3.next;}while (l1 != null){int a = l1.val + flag;l3.next = new ListNode(a%10);flag = a >= 10 ? 1 : 0;l1 = l1.next;l3 = l3.next;}while (l2 != null){int b = l2.val + flag;l3.next = new ListNode(b%10);flag = b >= 10 ? 1 : 0;l2 = l2.next;l3 = l3.next;}if (flag == 1){l3.next = new ListNode(flag);}return result.next;        }
}

题目07:删除链表的倒数第N个节点

  • 题号:19
  • 难度:中等
  • https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。

示例

给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.

说明

给定的n保证是有效的。

进阶

你能尝试使用一趟扫描实现吗?

思路: 使用两个指针,前面的指针p1先走n步,接着让后面的指针p2p1同步走,p1走到终点,p2即走到要移除的结点位置。

参考代码:

  • 执行结果:通过
  • 执行用时:104 ms, 在所有 C# 提交中击败了 86.93% 的用户
  • 内存消耗:24.6 MB, 在所有 C# 提交中击败了 100.00% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution 
{public ListNode RemoveNthFromEnd(ListNode head, int n) {ListNode p1 = head;ListNode p2 = head;while (n > 0){p1 = p1.next;n--;}if (p1 == null) //移除头结点{return head.next;}while (p1.next != null){p1 = p1.next;p2 = p2.next;}p2.next = p2.next.next;return head;}
}

题目08:两两交换链表中的节点

  • 题号:24
  • 难度:中等
  • https://leetcode-cn.com/problems/swap-nodes-in-pairs/

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

参考代码

  • 执行结果:通过
  • 执行用时:100 ms, 在所有 C# 提交中击败了 93.18% 的用户
  • 内存消耗:23.4 MB, 在所有 C# 提交中击败了 87.72% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/public class Solution
{public ListNode SwapPairs(ListNode head){if (head == null || head.next == null)return head;head = Swap(head);ListNode temp = head.next;while (temp != null && temp.next != null){temp.next = Swap(temp.next);if (temp.next != null){temp = temp.next.next;}}return head;}public ListNode Swap(ListNode node){if (node == null || node.next == null)return node;ListNode t = node.next;node.next = t.next;t.next = node;return t;}
}

题目09:旋转链表

  • 题号:61
  • 难度:中等
  • https://leetcode-cn.com/problems/rotate-list/

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL解释:
向右旋转 1: 5->1->2->3->4->NULL
向右旋转 2: 4->5->1->2->3->NULL

示例 2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL解释:
向右旋转 1: 2->0->1->NULL
向右旋转 2: 1->2->0->NULL
向右旋转 3: 0->1->2->NULL
向右旋转 4: 2->0->1->NULL

参考代码

  • 执行结果:通过
  • 执行用时:100 ms, 在所有 C# 提交中击败了 98.13% 的用户
  • 内存消耗:25.1 MB, 在所有 C# 提交中击败了 100.00% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/public class Solution
{public ListNode RotateRight(ListNode head, int k){if (head == null || k == 0)return head;int len = GetLength(head);int index = len - k%len;if (index == len)return head;ListNode temp1 = head;ListNode temp2 = head;for (int i = 0; i < index - 1; i++){temp1 = temp1.next;}head = temp1.next;temp1.next = null;temp1 = head;while (temp1.next != null){temp1 = temp1.next;}temp1.next = temp2;return head;}public int GetLength(ListNode head){ListNode temp = head;int i = 0;while (temp != null){i++;temp = temp.next;}return i;}
} 

题目10:合并K个排序链表

  • 题号:23
  • 难度:困难
  • https://leetcode-cn.com/problems/merge-k-sorted-lists/

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:

输入:
[1->4->5,1->3->4,2->6
]
输出: 1->1->2->3->4->4->5->6

思路:两两合并的方式。

构造合并两个有序链表得到一个新的有序链表的方法:ListNode MergeTwoLists(ListNode l1, ListNode l2)。可以使用该方法合并前两个有序链表得到一个新的有序链表,之后把这个新链表与第三个有序链表合并,依次类推,最后得到合并K个有序列表的新列表。

参考代码

  • 执行结果:通过
  • 执行用时:256 ms, 在所有 C# 提交中击败了 36.69% 的用户
  • 内存消耗:29.3 MB, 在所有 C# 提交中击败了 18.37% 的用户
/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution 
{public ListNode MergeTwoLists(ListNode l1, ListNode l2) {ListNode pHead = new ListNode(int.MaxValue);ListNode temp = pHead;while (l1 != null && l2 != null){if (l1.val < l2.val){temp.next = l1;l1 = l1.next;}else{temp.next = l2;l2 = l2.next;}temp = temp.next;}if (l1 != null)temp.next = l1;if (l2 != null)temp.next = l2;return pHead.next;}public ListNode MergeKLists(ListNode[] lists) {if (lists.Length == 0)return null;ListNode result = lists[0];for (int i = 1; i < lists.Length; i++){result = MergeTwoLists(result, lists[i]);}return result;}
}

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:



相关文章:

Linux之进程管理

程序是保存在外部存储设备&#xff08;如硬盘&#xff09;中的可执行机器代码和数据的集合。而进程是在CPU及内存中处于动态执行状态的计算机程序。每个程序启动后会产生一个或多个进程&#xff0c;如httpd程序&#xff0c;当有大量用户访问Web页面时&#xff0c;httpd程序会产…

win8 metro 拖拽重排grid

0.1 http://1.metrowin8.sinaapp.com/Code/index.html 拖拽重排实现思路 &#xff1a; 1.初始化拖拽对象时&#xff0c;上传拖拽对象中心点信息(包括id,className) 2.鼠标按下时&#xff0c;制造一个假的拖拽对象 3.鼠标放开时&#xff0c;计算鼠标与拖拽对象中心点的距离&…

什么是AngularJS?它有哪些特性?

AngulaJS是款非常优秀的JasSetpsn结构化框架,可以用来构建单页面应用程序&#xff0c;2009年,AngularJS由Misko Hevery等人创建&#xff0c;后来被Google收购&#xff0c;该技术已经被用于Coogle旗下的多款产品开发当中。开发人员不仅可以使用和扩展HTML语言的特性。而且可以更…

ELK安装文档及相关优化

前言&#xff1a;随着硬件成本的不断低廉&#xff0c;我们可以存储更多数据内容&#xff0c;也会对各数据加以利用&#xff0c;其中一项很重要的数据内容便是日志文件&#xff0c;无论是访问日志还是系统日志或是应用日志&#xff0c;都显得十分重要&#xff0c;而怎么加以利用…

数据结构与算法:09 栈与递归

09 栈与递归 知识结构&#xff1a; 栈是我们经常使用的一种数据结构&#xff0c;比如&#xff0c;手枪发射子弹的顺序与子弹压入弹夹的顺序是相反&#xff0c;即后压入弹夹的子弹先发射出来。又比如&#xff0c;我们使用的Word、Excel、Photoshop等软件系统中的撤销操作&#…

Javascript匿名函数

定义 匿名函数的定义非常简单&#xff1a;就是没有名字的函数。但是其用途非常的大 典型的函数定义方式 在看匿名函数之前我们先看下在Javascript中定义一个函数比较典型的几种方式 函数声明 function functionName(args) { //函数体 } 函数表达式 var functionName functi…

零基础学Java大数据难不难

java大数据如今在企业中用到的次数是非常多的&#xff0c;很多人都比较看好java技术&#xff0c;那么零基础学Java大数据难不难?想要学习java技术说难不难&#xff0c;说简单也不是很简单&#xff0c;来看看下面的详细介绍就知道了。 零基础学Java大数据难不难?因人而异&…

技术图文:01 面向对象设计原则

01 面向对象设计原则 知识结构&#xff1a; 一碟开胃的小菜 小菜今年计算机专业大四了&#xff0c;学了不少软件开发方面的东西&#xff0c;也学着编了些小程序&#xff0c;踌躇满志&#xff0c;一心要找一个好单位。当投递了无数简历后&#xff0c;终于收到了一个单位的面试…

关于GridView手动绑定的一段代码,一切尽在不言中

为GridView绑定主键的方法&#xff0c;在前台的DataGrid标签中加 DataKeyNames"ID" 后台获取ID&#xff1a; int idint.parse(this.GridView.DataKeys[e.RowIndex].Value.Tostring()); 如果DataKeyNames绑定了多个列取法&#xff1a;int idint.parse(this.G…

linux 服务器FTP服务安装教程

1.更新yum源 首先需要更新系统的yum源&#xff0c;便捷工具下载地址&#xff1a;http://help.aliyun.com/manual?spm0.0.0.0.zJ3dBU&helpId1692 2.安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 3.添加ftp帐号和目录 先检查一下nologin的位置&#xff0c;通常在…

CSS3颜色不透明度如何设置

web前端技术包含HTML和CSS样式&#xff0c;两者是相辅相成的&#xff0c;学习CSS样式不必可少&#xff0c;那么在学习CSS样式中&#xff0c;CSS3颜色不透明度如何设置?在CSS3之前&#xff0c;我们设置颜色的方式包含十六进制颜色(如#F00)、rgb模式颜色、或指定颜色的英文名称(…

技术图文:02 创建型设计模式(上)

创建型设计模式&#xff08;上&#xff09; 知识结构&#xff1a; 图1 知识结构 简单工厂模式 Sunny 软件公司欲基于 C# 语言开发一套图表库&#xff0c;该图表库可以为应用系统提供各种不同外观的图表&#xff0c;如&#xff1a; 柱状图&#xff08;histogram&#xff09;饼…

转:初探 jQuery 的 Sizzle 选择器

这是一篇关于介绍jQuery Sizzle选择器的文章&#xff0c;由我和obility共同完成。在文中&#xff0c;我们试图用自己的语言配以适量的代码向读者展现出Sizzle在处理选择符时的流程原理&#xff0c;以及末了以少许文字给你展示出如何借用Sizzle之手实现自定义选择器&#xff08;…

安装hadoop图文

1.下载hadoop-2.5.1,存放根目录 2.通过tar -zxvf 包名 来进行解压 3.通过mv命令将解压后的hadoop包移动到/home下 4.修改hadoop-en.sh配置文件,添加jdk的安装目录,操作如下图所示 5.修改core-site.xml配置文件,添加namenode的配置信息 6.修改hdfs-site.xml配置文件,添加seconda…

Java中父类方法重写有哪些需要注意的?

在继承关系中&#xff0c;子类会自动继承父类中公共的方法&#xff0c;但有时在子类中需要对继承的方法进行一些修改&#xff0c;即对父类的方法进行重写。需要注意的是&#xff0c;子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表以及返回值类型。 在上一节…

技术图文:02 创建型设计模式(下)

创建型设计模式&#xff08;下&#xff09; 知识结构&#xff1a; 图1 知识结构 单例模式 – 确保对象的唯一性 Sunny 软件公司承接了一个服务器负载均衡软件的开发工作&#xff0c;该软件运行在一台负载均衡服务器上&#xff0c;可以将并发访问和数据流量分发到服务器集群中…

[转载]C# 二进制与十进制,十进制与十六进制相互转换

原文地址&#xff1a;C# 二进制与十进制,十进制与十六进制相互转换作者&#xff1a;tonytonglx十进制转二进制&#xff1a;用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302302/2 151 余0151/2 75 余175/2 37 余137/2 18 余118/2 9 余09/2 4 余14/2 …

感知哈希算法——找出相似的图片

参考Neal Krawetz博士的这篇文章, 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹越相似, 说明两张图片就越相似. 但关键是如何根据图片计算出"指纹"呢? 下面用最简单的步…

学web前端需要了解哪些常识

想要学好web前端技术&#xff0c;那么一定要掌握足够的知识&#xff0c;web前端技术包含很多方面的知识&#xff0c;具体学web前端需要了解哪些常识?来看看下面的详细介绍。 学web前端需要了解哪些常识? html css javascript。 要学的内容实在很多&#xff0c;如果没有其他编…

linux下后台执行shell脚本

一句话 nohup sh startup_Server.sh & 转载于:https://www.cnblogs.com/phpcode/archive/2012/04/24/2522761.html

线性代数:第一章 线性方程组

本讲义是自己上课所用幻灯片&#xff0c;里面没有详细的推导过程&#xff08;笔者板书推导&#xff09;只以大纲的方式来展示课上的内容&#xff0c;以方便大家下来复习。 从本章开始&#xff0c;我们一起来学习线性代数的有关知识&#xff0c;线性代数的应用之一就是求解复杂…

菜鸟也来学习ORACLE(1)_linux下安装oracle 11g

加入 oracle Club 之前&#xff0c;学长给我们开了个小会 说是看看我们加入的意愿&#xff0c;哎哎 其实直无聊&#xff0c;但是大体比较重视linux 服务器的搭建 以及在linux 下安装oracle 搭建一个oracle 环境吧、我就想这东西能有多难&#xff0c;于是回来就搭建起了&#x…

CSS浮动元素特点有什么

什么是浮动? 元素的浮动是指设置了浮动属性(flot)的元素。 CSS浮动有什么作用? 1.让多个盒子水平排列成一行&#xff0c;浮动成为布局的重要手段; 2.可以实现盒子的左右对齐等等; 3.浮动最早是用来控制图片&#xff0c;实现文字环绕图片的效果。 CSS浮动的语法&#xff1a; 选…

数据结构与算法:11 Leetcode同步练习(四)

目录 题目01&#xff1a;最小栈题目02&#xff1a;有效的括号题目03&#xff1a;用队列实现栈题目04&#xff1a;整数反转题目05&#xff1a;逆波兰表达式求值题目06&#xff1a;全排列题目07&#xff1a;字符串转换整数 (atoi)题目08&#xff1a;设计循环双端队列题目09&…

trie树 详解

前几天学习了并查集和trie树&#xff0c;这里总结一下trie。 本文讨论一棵最简单的trie树&#xff0c;基于英文26个字母组成的字符串&#xff0c;讨论插入字符串、判断前缀是否存在、查找字符串等基本操作&#xff1b;至于trie树的删除单个节点实在是少见&#xff0c;故在此…

启动hadoop的节点

1.启动hadoop的节点 start-dfs.sh 本文转自 素颜猪 51CTO博客&#xff0c;原文链接:http://blog.51cto.com/suyanzhu/1959242

什么是Python线程?Python线程如何创建?

相信正在学习Python技术或者对Python语言有一定了解的人对于Python线程应该都不陌生&#xff0c;但是也有刚接触Python的小伙伴对于Python线程并不了解&#xff0c;今天小编就跟大家聊聊什么是Python线程&#xff0c;又该如何创建Python线程! 什么是Python线程?Python线程如何…

ItemAdding实现数据验证--中文字段,properties.AfterProperties值为null的问题

最近写事件接收器&#xff0c;发现中文字段如果直接用properties.AfterProperties[“申请人"]这样获取的值为null&#xff0c;无法得到值。后拉忽然发现用英文字段可以得到值。难道中文字段需要编码&#xff1f;经过测试果真如此。 代码部分如下&#xff1a;public overri…

jstl c:choose、c:when和c:otherwise标签

在用spring mvc中&#xff0c;页面前端老用jstl&#xff0c;记录一下。 <c:choose>、<c:when>和<c:otherwise>在一起连用&#xff0c;可以实现Java语言中的if-else语句的功能。例如以下代码根据username请求参数的值来打印不同的结果&#xff1a; <c:choo…