自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 leetcode 191: Number of 1 Bits

Question: Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight). For example, the 32-bit integer ’11’ has binary representation

2015-09-01 21:15:10 469

原创 leetcode 190:Reverse Bits

Quetions: Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 0

2015-09-01 21:04:54 414

原创 leetcode 201:Bitwise AND of Numbers Range

Question:   Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.For example, given the range [5, 7], you should return 4.题目(大致意思):   给

2015-09-01 19:33:14 433

原创 一道华为面试题

这两天是华为的暑期实习面试,有些同学参加了,并说了一下面试被问到的问题,因为毕竟是实习生,所以总体上题目不难。记录一下其中一题: 输出一个字符串中每个字符出现的次数。 题目不难,C++的同学可能首先想到的解决方案是hash_map,但是貌似有同学参加写了map的代码,面试官竟然说看不懂(原话:你统计字符的代码在哪?)。表示很无语,本科的时候面过华为,当时要求是用C实现的,所以想了一下这个问题,用

2015-05-19 12:45:59 689

原创 如何判别机器是大端还是小端

最近在学UNP,看到大端小端的概念,于是想写个程序测试一下自己的机器是哪一种。先解释一下这两个概念: 小端:高字节存在高地址,低字节存在低地址 大端:高字节存在低地址,低字节存在高地址 方法1:#include <stdio.h>int main(){ short a=0x0102; //判断首地址是1还是2,是1则为小端,是2则为大端 if((char)a ==

2015-05-14 23:46:17 660

原创 工厂模式

参考《大话设计模式》 工厂模式常用来实例化对象,但与此同时,程序在可扩展性和修改量上会有更大的提升。下面是大话设计模式里的例子,我自己实现了一遍,作为参考:#include <iostream>using namespace std;//运算基类class operation{public: double numa; double numb; virtual do

2015-05-08 16:22:22 348

原创 单链表反转算法

struct ListNode { int val; struct ListNode *next;};想到两种方法:1.空间换时间想法是构建一个新的单链表,然后遍历原来的单链表,每遍一个就把它插入到最新的单链表的开头,下面是代码:struct ListNode *reverseList(struct ListNode *list) { struct ListNode *ne

2015-04-21 16:59:21 486

原创 C++类里的成员函数如何调用全局变量

比如在hello.h文件中定义了一个类A,在main.cpp里有一个全局变量var,现在问题是如何在hello.cpp里调用var呢?    方法:在hello.h文件里extern重新声明一下var变量,这样就可以在hello.cpp里使用这个变量了.

2015-04-17 15:16:46 4786

原创 Qt Udp聊天室

之前看了《apue》,但是一直没做什么东西,很多概念性的东西了解之后不实践很容易忘掉。所以蹦出写一个聊天室的想法。当然Qt内部有关于Udp和Tcp相关类的封装,任何底层的函数都可以通过直接调用类里的方法完成。我也是参照了《Qt学习之路》这一系列文章做下去的。 先看一下Udp和Tcp什么区别: Udp是无连接,什么是无连接呢?就是说两台机器如果通信的话不需要事先经过一些约定(连接),可以直接传数据

2015-04-16 16:21:17 2426

原创 LeetCode 73:Set Matrix Zeros

题目:给定一个m*n的数组,如果数组里的某个元素为0,那么把这个元素的整行和整列元素都设为0。要求空间复杂度越低越好。解1:直接再开辟一个同样大小的数组进行判断操作,优点是时间复杂度低,缺点是空间复杂度太大,为O(mn)解2:开辟两个一维数组,大小分别为m和n,且称为A和B。如果i行有元素为0,则设A[i]为0,如果j列有元素为0,则设B[j]为0。这样再循环遍历完所有元素之后,即

2015-04-13 19:18:09 533

原创 leetcode 1:Two Sum

题目:在一个无序的数组里找到两个数使得和等于给定的数.将二者在数组里的下表值返回到一个vector里.     如:     ,9.那么程序应该返回:(第1个和第2个元素满足条件);     解法1: 暴力法。直接遍历两次分别从头遍到尾,容易知道时间复杂度为O(n^2),所以如果序列元素很多的话,那么必然是需要相当长的时间的。     解法2:     可以把题目这样想

2015-04-09 22:30:44 463

原创 leetcode 119:Pascal's Triangle II

题目:其实和118的题目差不多,只不过这个是输出指定行号的vector,对之前的代码小小修改就可以达到目的。下面是我的解法:class Solution {public: vector getRow(int rowIndex) { vector ans; vector temp; rowIndex = rowIndex + 1;

2015-04-08 22:16:12 429

原创 leetcode 118

题目:    解:先考虑numRows小于3的情况(非常简单,直接赋值),再考虑numRows大于3的情况(每次循环记录上一次行的vector),然后根据相应的规则相加得到最新一行的vector,同时把最新的一行的vector赋给上一行即可,循环到numRows结束.class Solution {public: vector > generate(int numRo

2015-04-08 21:42:33 459

原创 数据结构之散列表

这两天做OJ发现很多题目的解法用HASH的话会方便高效很多,但是苦于数据结构这一块学的不够扎实,所以重新学习一下HASH的知识。我记得第一次接触HASH的时候是本科备战数据库考试的时候,里面提到了这么一个概念,当时是为了实现高效存储以及高效访问数据库数据的方式,但是为了应试,当时只是记下了概念没有进入深入的思考,导致现在对这个一点概念都没有。另外,这篇文章参照的是《大话数据结构》这本书(因为《算法

2015-04-08 18:20:13 572

原创 leetcode 169

题目:数组里有一个元素出现的次数在(n/2+1)以上,找到这个元素. 解法1: 暴力法,从头开始计算每个元素出现的次数,然后找到出现次数满足要求的元素并且返回,但是本人在提交代码的时候发现。。。Time limit out,也就是算法时间复杂度太大,解决不了规模太大的问题。于是看了discussion里大神们的答案,然后发现了下面这个解法。 解法2:int majorityElemen

2015-04-01 22:50:27 432

原创 leetcode 88

题目:将两个有序(升序)的数组A和B合并为一个升序数组,其中A数组的空间足够大。 解法1: 二话不说,暴力求解,直接遍历A,再内部遍历B,依次判断得到结果。时间复杂度O(n^2),数据很大的话是无法接受的。 解法2: 因为将新的数组赋给A,那么就有一个问题。如果顺序遍历的话,那么新的数据就有可能覆盖A中还未参加比较的数据,这样肯定会引起一系列的错误的。但是题目中说A的数组是足

2015-04-01 22:27:42 529

原创 leetcode 191

输出一个无符号整型数的二进制"1"的个数.如3的话为11,所以答案是2.解法1: int hammingWeight(uint32_t n) { int nums = 0; while(n) { nums += n%2; n = n / 2; } return nums; } 十进制转二进制这个过程计算个数,最常

2015-03-31 16:36:12 615

原创 并行计算MPI(三):计算π

学习了之前的一些并行计算MPI基本知识之后,其实可以尝试应用起来,今天这篇文章就是用并行计算求解π的。首先需要知道π的求解方式:        上面是高等数学里的基本知识,所以π的求解就可以变为求解y(x)=4/(1+x^2)在(0,1)区间的面积。而且求解面积这一块可以采用将(0,1)平均分n个块,将n个矩形面积相加即可得到近似解。而且n取得越大,近似解越精确。    比如我们取n=

2015-03-11 13:54:35 17829 5

原创 并行计算MPI(二):MPI阻塞通信

阻塞通信:消息发送方的send需要接收方的recv配合才能完成。MPI对阻塞通信一些底层函数进行了一些封装,方便我们调用。        1.标准通信模式: MPI_Send(buf, buf_size, MPI_CHAR, process1, tag, MPI_COMM_WORLD); MPI_Recv(buf, buf_size, MPI_CHAR, process0, ta

2015-03-09 11:50:02 3885

原创 并行计算MPI(一):MPI入门

这个学期老板可能让我做并行计算方面的东西并推荐MPI给我学习。私下找了一些资料,这个系列作为学习MPI的一个记录吧,所用的主要有两本书:《高性能计算并行编程技术》,都志辉,清华大学出版社;还有一本《MPI并行程序设计实例》,清华大学出版社。代码有自己写的,书上的,网上的。  1.MPI介绍  说到底,MPI就是一个库,一个抽象了的库,这样在你编写多进程,多线程程序的时候不用关心

2015-03-06 20:46:51 18077 1

原创 《Effective C++》 条款0-2

前言(废话):今天开始读<<Effective C++>>这本书。这个笔记主要是对书里的条款记录自己的理解,同时回复一些C++基础知识。条款0的C++基本概念:1.隐式类型转换的问题 隐式转换是编译器执行的,不是程序员能控制的。 "可以用单个实参来调用的构造函数定义了从形参类型到该类型的一个隐式转换。" --- <<C++ PRIMER>> 翻译的非常拗口难懂,今天查资料才弄明白。上

2015-03-03 18:46:00 429

转载 【转载】C++拷贝构造函数详解

一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100;  int b = a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp] view pla

2015-01-21 13:38:28 335

转载 C++ static 关键字

C++ static 关键字1.面向过程设计中的static关键字.1.1静态全局变量#include static int num = 0;void f() { num = num + 1;}int main(int argc, char *argv[]) { std::cout << num << std::endl; f(); std::cout

2015-01-20 18:49:02 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除