摘要:
题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 解法一 时间复杂度:O(n) 空间复杂度:O(1) 思路:将非零值覆盖数组前方,尾部赋为零值 void moveZeroes(vector& nums) { int j = 0; for (in 阅读全文
摘要:
需求说明 需要通过python将activemq的管理页面通过爬虫抓取下来,显示各消息队列的信息。 由于是刚刚学习的python,花了一个下午才写好,只是基本实现了功能,但是有些地方还是比较简单,等以后对于爬虫知识更加了解了再修改吧 直接贴代码了: 实现代码 coding:utf 8 """ 使用方 阅读全文
摘要:
题目说明 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须原地修改,只允许使用额外常数空间。 解法1 找到下一个更大序列,可以理解为将数字序列想像成由这些数字序列组成的一个数字,要找到 阅读全文
摘要:
描述 之前都是用svn进行代码管理,有一套基于svn的代码统计工具,切到git以后,以前的工具无法使用了,经过一顿摸索,改用gitstats工具进行统计,这里记录一下用法。 下载 使用gitstats工具对代码进行统计,下载压缩包 安装与使用 linux环境下 安装 由于gitstats依赖于gnu 阅读全文
摘要:
题目说明 给定一个文档 (Unix style) 的完全路径,请进行路径简化。 例如, path = "/home/", = "/home" path = "/a/./b/../../c/", = "/c" 解法1 本题的关键在于,需要对字符串按'/'进行分隔,分隔后得到容器,遍历分隔该容器,用栈来 阅读全文
摘要:
题目说明 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 解法1 使用栈来存储左括号,遇到右括号则与栈顶元素(即最后入栈的 阅读全文
摘要:
题目说明 给定一个单链表 L:L0→L1→…→Ln 1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln 1→L2→Ln 2→… 解法1 首先利用快慢指针找到链表中间结点mid,然后从head遍历到mid,遍历时,将对应的尾部结点插入到当前结点之后。 找尾部对应结点时,从mid遍历到尾部找到对 阅读全文
摘要:
题目说明 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 解法1 / 时间复杂度:O(n) 得到链表长度,k对其取余(对链表进行旋转次数是长度的整数倍数时,链表是不变的),求得的k值即有效的旋转次数 每次旋转,将最后一个结点移到第一个结点位置 所以每次都需要定位到最 阅读全文
摘要:
题目说明 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 解法1 使用归并排序对链表进行排序 / 时间复杂度:O(nlogn) 归并排序的递归实现 / ListNode sortList(ListNode head) { if (head == NULL || head 阅读全文
摘要:
题目说明 对链表进行插入排序。 从第一个元素开始,该链表可以被认为已经部分排序。每次迭代时,从输入数据中移除一个元素,并原地将其插入到已排好序的链表中。 解法1 遍历链表,每个结点i都与前面的结点进行比较,若大于i结点,则将i结点插入到该点前面 / 时间复杂度:O(n^2) 遍历链表,每个结点i都与 阅读全文