![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
各类OJ
sj_lxd
这个作者很懒,什么都没留下…
展开
-
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 · 618 阅读 · 0 评论 -
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 · 435 阅读 · 0 评论 -
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 · 472 阅读 · 0 评论 -
一道华为面试题
这两天是华为的暑期实习面试,有些同学参加了,并说了一下面试被问到的问题,因为毕竟是实习生,所以总体上题目不难。记录一下其中一题: 输出一个字符串中每个字符出现的次数。 题目不难,C++的同学可能首先想到的解决方案是hash_map,但是貌似有同学参加写了map的代码,面试官竟然说看不懂(原话:你统计字符的代码在哪?)。表示很无语,本科的时候面过华为,当时要求是用C实现的,所以想了一下这个问题,用原创 2015-05-19 12:45:59 · 691 阅读 · 0 评论 -
单链表反转算法
struct ListNode { int val; struct ListNode *next;};想到两种方法:1.空间换时间想法是构建一个新的单链表,然后遍历原来的单链表,每遍一个就把它插入到最新的单链表的开头,下面是代码:struct ListNode *reverseList(struct ListNode *list) { struct ListNode *ne原创 2015-04-21 16:59:21 · 487 阅读 · 0 评论 -
leetcode 1:Two Sum
题目:在一个无序的数组里找到两个数使得和等于给定的数.将二者在数组里的下表值返回到一个vector里. 如: ,9.那么程序应该返回:(第1个和第2个元素满足条件); 解法1: 暴力法。直接遍历两次分别从头遍到尾,容易知道时间复杂度为O(n^2),所以如果序列元素很多的话,那么必然是需要相当长的时间的。 解法2: 可以把题目这样想原创 2015-04-09 22:30:44 · 463 阅读 · 0 评论 -
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 阅读 · 0 评论 -
数据结构之散列表
这两天做OJ发现很多题目的解法用HASH的话会方便高效很多,但是苦于数据结构这一块学的不够扎实,所以重新学习一下HASH的知识。我记得第一次接触HASH的时候是本科备战数据库考试的时候,里面提到了这么一个概念,当时是为了实现高效存储以及高效访问数据库数据的方式,但是为了应试,当时只是记下了概念没有进入深入的思考,导致现在对这个一点概念都没有。另外,这篇文章参照的是《大话数据结构》这本书(因为《算法原创 2015-04-08 18:20:13 · 575 阅读 · 0 评论 -
leetcode 118
题目: 解:先考虑numRows小于3的情况(非常简单,直接赋值),再考虑numRows大于3的情况(每次循环记录上一次行的vector),然后根据相应的规则相加得到最新一行的vector,同时把最新的一行的vector赋给上一行即可,循环到numRows结束.class Solution {public: vector > generate(int numRo原创 2015-04-08 21:42:33 · 461 阅读 · 0 评论 -
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 · 534 阅读 · 0 评论 -
leetcode 169
题目:数组里有一个元素出现的次数在(n/2+1)以上,找到这个元素. 解法1: 暴力法,从头开始计算每个元素出现的次数,然后找到出现次数满足要求的元素并且返回,但是本人在提交代码的时候发现。。。Time limit out,也就是算法时间复杂度太大,解决不了规模太大的问题。于是看了discussion里大神们的答案,然后发现了下面这个解法。 解法2:int majorityElemen原创 2015-04-01 22:50:27 · 434 阅读 · 0 评论 -
leetcode 88
题目:将两个有序(升序)的数组A和B合并为一个升序数组,其中A数组的空间足够大。 解法1: 二话不说,暴力求解,直接遍历A,再内部遍历B,依次判断得到结果。时间复杂度O(n^2),数据很大的话是无法接受的。 解法2: 因为将新的数组赋给A,那么就有一个问题。如果顺序遍历的话,那么新的数据就有可能覆盖A中还未参加比较的数据,这样肯定会引起一系列的错误的。但是题目中说A的数组是足原创 2015-04-01 22:27:42 · 532 阅读 · 0 评论 -
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 · 418 阅读 · 0 评论