每一个你不满意的现在, 都有一个你没有努力的曾经.
G-bits Wurq
C++博客
首页
新随笔
联系
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
统计
随笔 - 57
文章 - 7
评论 - 0
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
【C++学习记录】
(rss)
【Gsc 编译器开发】
(rss)
【LeeCode 每日N题】(50)
(rss)
【Vs 插件开发】(1)
(rss)
【成长计划】(2)
(rss)
【技术干货】(2)
(rss)
【算法详解】
(rss)
随笔档案
2017年9月 (17)
2017年8月 (15)
2017年7月 (3)
2017年6月 (18)
2017年4月 (4)
文章分类
【LLVM】(2)
(rss)
【Note】(2)
(rss)
文章档案
2017年4月 (6)
2017年3月 (1)
Blog
陈皓【酷壳】
(rss)
【C博客】MoreWindows Blog
(rss)
【博客园(sunev)】C# Socket
(rss)
陈皓【CSDN】
(rss)
子扬【博客园】
(rss)
Coder 必备技巧
.NET C# 如何监控并及时的显示另一个控制台Console的输出
(rss)
C 的 前 置 處 理 器
(rss)
关于.NET编译的目标平台(AnyCPU,x86,x64)
(rss)
C++强制类型转换的区别
(rss)
C++中的类模板详细讲述
(rss)
Git入门教程
(rss)
Gvim
(rss)
lib和dll的关系
(rss)
Makefile详解
(rss)
makefile中=、:=和+=的区别
(rss)
Microsoft Visual Studio 文件识别及其用途简述
(rss)
Vim与GCC和gdb完美组合
(rss)
控制台,终端,tty,shell等概念的区别
(rss)
在VS中添加lib库的三种方法
(rss)
正则表达式全部符号解释
(rss)
字节对齐详解
(rss)
Compiler for Wurq
vc++调用exe时,如何获取exe的输出信息
(rss)
自制编译器
(rss)
ChsLLVMDocs
(rss)
SHINING【CSDN】
(rss)
伯乐在线(解释器)
(rss)
底层虚拟机(LLVM)中间语言(IR)基本语法简介
(rss)
简单jit的实现
(rss)
用LLVM开发新语言
(rss)
搜索
最新评论
阅读排行榜
1. 【宏定义】静/动态 创建变量(392)
2. 【Vs 插件开发】清理Vs实验实例的环境(336)
3. 【成长计划 2017/8/14】第一个月的成长计划(219)
4. 【LeeCode 2017/06/12】 617. Merge Two Binary Trees (205)
5. 【编码规范】C++ 编码规范(204)
评论排行榜
1. 【宏定义】静/动态 创建变量(0)
2. 【Every Day】Fighting!!!(0)
3. 【编码规范】C++ 编码规范(0)
4. 【编程术语】(0)
5. 【LeeCode 2017/06/12】 617. Merge Two Binary Trees (0)
【LeeCode 2017/09/18】189. Rotate Array
题目大意: 将数组向前循环移动k位。
1.翻转数组
class
Solution {
public
:
void
rotate(vector
<
int
>&
nums,
int
k) {
k
=
k
%
nums.size();
if
(k
==
0
)
return
;
std::reverse(nums.begin(), nums.end());
std::reverse(nums.begin(), nums.begin()
+
k);
std::reverse(nums.begin()
+
k, nums.end());
}
};
2.内存拷贝
class
Solution {
public
:
void
rotate(vector
<
int
>&
nums,
int
k) {
k
=
k
%
nums.size();
if
(k
==
0
)
return
;
int
*
ptr
=
new
int
[nums.size()];
std::memcpy(ptr, nums.data()
+
(nums.size()
-
k),
sizeof
(
int
)
*
k);
std::memcpy(ptr
+
k, nums.data(),
sizeof
(
int
)
*
(nums.size()
-
k));
std::memcpy(nums.data(), ptr,
sizeof
(
int
)
*
nums.size());
delete ptr;
}
};
3.循环遍历
class
Solution {
public
:
void
rotate(vector
<
int
>&
nums,
int
k) {
}
};
posted @
2017-09-18 16:08
Wurq 阅读(148) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/16】172. Factorial Trailing Zeroes
//
给定N,求解N!的末尾有多少个0
class
Solution
{
public
:
int
trailingZeroes(
int
n) {
int
ret
=
n
/
5
;
int
sum
=
ret;
while
(ret
>=
5
)
{
ret
=
ret
/
5
;
sum
+=
ret;
}
return
sum;
}
};
posted @
2017-09-18 14:13
Wurq 阅读(174) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/15】171. Excel Sheet Column Number
class
Solution {
public
:
int
titleToNumber(
string
s)
{
int
ret
=
0
;
int
Sign
=
1
;
for
(
int
i
=
s.length()
-
1
; i
>=
0
; i
--
)
{
int
num
=
s[i]
-
'
A
'
+
1
;
ret
=
ret
+
num
*
Sign ;
Sign
*=
26
;
}
return
ret;
}
};
posted @
2017-09-15 16:06
Wurq 阅读(176) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/14】169. Majority Element
class
Solution {
public
:
int
majorityElement(vector
<
int
>&
nums)
{
int
count
=
nums.size();
map
<
int
,
int
>
m;
for
(
int
i
=
0
;i
<
count;i
++
)
{
m[nums[i]]
++
;
if
(m[nums[i]]
>
count
/
2
)
return
nums[i];
}
return
-
1
;
}
};
posted @
2017-09-14 14:01
Wurq 阅读(166) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/13】168. Excel Sheet Column Title
[算法详解/进制转换]
class
Solution {
public
:
string
convertToTitle(
int
n) {
string
ret
=
""
;
while
(n)
{
ret
=
(
char
)((n
-
1
)
%
26
+
'
A
'
)
+
ret;
n
=
(n
-
1
)
/
26
;
}
return
ret;
}
};
posted @
2017-09-13 20:36
Wurq 阅读(161) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/12】167. Two Sum II - Input array is sorted
//
尺取法
class
Solution {
public
:
vector
<
int
>
twoSum(vector
<
int
>&
numbers,
int
target)
{
vector
<
int
>
ret
=
vector
<
int
>
();
int
start
=
0
;
int
end
=
numbers.size()
-
1
;
while
(start
<
end)
{
if
(numbers[start]
+
numbers[end]
==
target)
{
ret.push_back(start
+
1
);
ret.push_back(end
+
1
);
break
;
}
else
if
(numbers[start]
+
numbers[end]
<
target)
start
++
;
else
end
--
;
}
return
ret;
}
};
posted @
2017-09-12 20:43
Wurq 阅读(144) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/11】160. Intersection of Two Linked Lists
//
题目大意: 寻找两个单向链表的最初的相交点,并且这两个单向链表不会构成的环。
//
而我对链表的环的理解是 : 按顺序拼接而成的同向环。
//
题目要求在时间复杂度为O(n),空间复杂度为O(1)的情况下完成,而且这还只是Easy题
//
我就纳闷了,这样的情况有什么神奇的思路可以实现?
//
苦思冥想没想到合适的解法,去网上找大神题解才明白,环是指构成圈圈即可,无关方向Orz
//
不明白的一点就是,为什么末尾一定会重合?,不存在中间子链表的情况吗?
//
这样问题就容易解决的多了,也就是说最初的交点将会导致后续的节点全部重合。
class
Solution {
public
:
ListNode
*
getIntersectionNode(ListNode
*
headA, ListNode
*
headB)
{
if
(headA
==
nullptr
&&
headB
==
nullptr)
return
nullptr;
int
lenA
=
0
;
int
lenB
=
0
;
ListNode
*
a
=
headA;
ListNode
*
b
=
headB;
while
(a
!=
nullptr) {a
=
a
->
next;lenA
++
;}
while
(b
!=
nullptr) {b
=
b
->
next;lenB
++
;}
if
(lenA
<=
lenB){
a
=
headA;b
=
headB;
while
(lenB
-
lenA
>
0
){lenB
--
;b
=
b
->
next;}
}
else
{
a
=
headB;b
=
headA;
while
(lenA
-
lenB
>
0
){lenA
--
;b
=
b
->
next;}
}
while
(a
!=
nullptr
&&
b
!=
nullptr)
{
if
(a
->
val
==
b
->
val)
return
a;
a
=
a
->
next;
b
=
b
->
next;
}
return
nullptr;
}
};
posted @
2017-09-12 14:38
Wurq 阅读(188) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/09】155. Min Stack
两个stack
//
最小栈
//
两个stack
class
MinStack {
public
:
stack
<
int
>
allStack;
stack
<
int
>
minStack;
MinStack()
{
allStack
=
stack
<
int
>
();
minStack
=
stack
<
int
>
();
}
void
push(
int
x)
{
if
(minStack.empty()
||
x
<=
minStack.top())
minStack.push(x);
allStack.push(x);
}
void
pop()
{
int
topNum
=
allStack.top();
if
(topNum
==
minStack.top())
minStack.pop();
allStack.pop();
}
int
top() {
return
allStack.top();}
int
getMin() {
return
minStack.top();}
};
数组模拟最小栈
class
MinStack {
public
:
stack
<
int
>
allStack;
vector
<
int
>
minNum;
//
记录当前栈位置最小的值
int
index
=
-
1
;
MinStack()
{
allStack
=
stack
<
int
>
();
minNum
=
vector
<
int
>
();
index
=
-
1
;
}
void
Add_Stack(
int
x)
{
if
(
0
<=
index
+
1
&&
index
+
1
<
minNum.size())
minNum[index
+
1
]
=
x;
else
minNum.push_back(x);
}
void
push(
int
x)
{
if
(index
==
-
1
||
x
<=
minNum[index])
{
Add_Stack(x);
index
++
;
}
allStack.push(x);
}
void
pop()
{
int
topNum
=
allStack.top();
allStack.pop();
if
(topNum
==
minNum[index])
index
--
;
}
int
top() {
return
allStack.top();}
int
getMin() {
return
minNum[index];}
};
posted @
2017-09-09 16:33
Wurq 阅读(170) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/08】122. Best Time to Buy and Sell Stock II
class
Solution {
public
:
int
maxProfit(vector
<
int
>&
prices)
{
int
sum
=
0
;
for
(
int
i
=
0
; i
<
prices.size(); i
++
)
{
if
(i
+
1
>=
prices.size()
||
prices[i]
>=
prices[i
+
1
])
continue
;
int
j
=
i
+
1
;
for
(j
=
i
+
1
; j
<
prices.size(); j
++
)
{
if
(prices[j]
<
prices[j
-
1
])
break
;
}
sum
+=
prices[
--
j]
-
prices[i];
i
=
j;
}
return
sum;
}
};
posted @
2017-09-08 15:59
Wurq 阅读(120) |
评论 (0)
|
编辑
收藏
【LeeCode 2017/09/07】141. Linked List Cycle
//
给定一条链表,判断该链表中是否存在环
//
创建两天速率不同(互质)的链表指针,如果这两指针能够重合则说明存在环。
class
Solution
{
public
:
bool
hasCycle(ListNode
*
head)
{
ListNode
*
fast
=
head;
ListNode
*
slow
=
head;
while
(fast
!=
nullptr
&&
slow
!=
nullptr)
{
fast
=
fast
->
next;
if
(slow
->
next
==
nullptr)
slow
=
nullptr;
else
slow
=
slow
->
next
->
next;
if
(fast
==
nullptr
||
slow
==
nullptr)
break
;
if
(fast
->
val
==
slow
->
val)
return
true
;
}
return
false
;
}
};
posted @
2017-09-08 15:39
Wurq 阅读(132) |
评论 (0)
|
编辑
收藏
仅列出标题
共6页: 1
2
3
4
5
6