- 博客(10)
- 收藏
- 关注
原创 线程、进程、临界区
今晚学习了多线程,记录一下。 进程:它是一个执行中的程序。程序是没有生命的实体,只有CPU赋予其生命,才能成为一个活动的实体,就是进程。同时,又是资源分配的基本单位。一个进程可以包括多个线程。 线程:它是独立运行和独立调度的基本单位,可以利用进程拥有的资源,但是本身很小,实际并不拥有系统资源,所以对线程进行调度开销会很小,能有效提高并发执行的程度。 线程和进程的区别在
2016-05-02 21:30:20 420
原创 Qt 关于对象创建时parent的问题
在多窗口编程的时候遇到一个关于焦点的问题,主窗口弹出一个dialog,又从这个dialog上弹出一个warning,当点确定时,焦点又回到了主窗口。发现在创建warning的时候,parent传的是this指针,应该传dialog的指针,这样当warning消失后,焦点又能回到dialog。 以前都没有在意parent,以后在对象创建时,一定要想清楚parent的归属,才能保证焦点的正
2016-02-17 21:13:07 758
原创 Qt QTextEdit根据行号移动光标
在实现记事本的时候,有个选项是转到某行行首,找了半天终于找到解决办法了,记录一下。QTextEdit* p = new QTextEdit;QTextBlock block = p->document()->findBlockByNumber(nLineNum);p->setTextCursor(QTextCursor(block));
2016-02-16 20:14:02 5692 3
原创 快速排序中分区算法的延伸——划分多个区间
按照自己的理解,分区算法partition的核心在于:索引的变换和交换元素,也就是说按照索引将不同的元素交换到不同的区间。快排中的partition只划分了2个区间:小等于以及大于。在这里,我们划分3个区间:小于、等于和大于,若给定数组arr{1,2,3,4,0,2},最后一个2设为主元nPivot,则经过分区后的数组也许为arr{1,0,2,2,4,3}(先不管相同区间的元素顺序)。划分3个
2016-02-10 15:34:53 1132
原创 LeetCode 56. Merge Intervals
首先这道题的思路其实非常清晰,先根据Interval的start数值进行排序,用sort()函数,时间复杂度为O(nlgn),不需要自己去写快排什么的,直接调用sort(intervals.begin(), intervals.end(), cmp),再根据题目要求处理,注意[1,2],[1,4]归并得[1,4],而[1,6],[1,4]归并为[1,6],也就是要取end的较大值,调用max函数。
2016-02-10 14:04:05 245
原创 关于对象的构造、复制构造、析构、赋值的问题
1.某类包含string类对象,在对该对象进行操作时,会调用string类的构造、复制构造、析构和赋值。2.派生类对象中的基类部分仍然需要调用基类的构造、复制构造、析构和赋值,相当于各管各的。析构是自动调用的,赋值要CBase::operator=()显式调用,构造和赋值构造要在初始化列表里 : CBase()显式调用,如果不显示调用,会自动调用默认的,若存在new会出错。3.只要某个类动
2016-02-05 21:27:10 332
原创 LeetCode 73. Set Matrix Zeroes
按照题目肯定是需要分配空间来标示某行某列是否需要全设为0。1.最简单的方法,空间是O(m+n):分配m+n个bool空间,第一次遍历矩阵,若matrix[i][j] == 0,则把第i行和第j列设为true,在第二次遍历矩阵时,查询第i行第j列是否都是true,然后再决定matrix[i][j]是否设为0。2.空间是O(1),只需要2个bool值bRow和bCol:用来指示
2016-02-05 17:17:33 278
原创 LeetCode 27. Remove Element
按道理是很简单的题目,遍历一次,删除相关value即可,看tag说是two points,还是不造怎么用这个做。普通的代码如下:class Solution {public: int removeElement(vector& nums, int val) { vector::iterator iter = nums.begin(); w
2016-02-05 15:52:59 214
原创 LeetCode 229. Majority Element II
题目要求线性时间和常量空间,网上看见都是用摩尔投票算法,算是大概想通了,记录一下。算法思想:1.根据题目要求,设n个候选值key和对应的次数time,初始设为0;2.第一次遍历数组,若array[i] == key,++time;若不等,再看time,若time == 0,则用array[i]取代key,++time;若time != 0,则--time; 3.第二
2016-02-05 00:14:50 380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人