leetcode
NEU_33
这个作者很懒,什么都没留下…
展开
-
FizzBuzz
实际运行时头文件:vs2013#if _MSC_VER#define snprintf _snprintf#endif#pragma warning(disable: 4996)方法一:char** fizzBuzz(int n, int* returnSize) { int i; char **ret; char *buf; ret = (char **)cal原创 2017-01-09 16:49:56 · 337 阅读 · 0 评论 -
Assign Cookies
方法一:int compInc(const void *a, const void *b){ return *(int *)a - *(int *)b;}int findContentChildren(int* g, int gSize, int* s, int sSize) { int i, j, count = 0, a = 0; qsort(g, gSize, sizeof(原创 2017-01-11 20:07:15 · 235 阅读 · 0 评论 -
Invert Binary Tree
方法一:struct TreeNode* invertTree(struct TreeNode* root) { TreeNode* temp; if(root==NULL) return root; temp=root->left; root->left=invertTree(root->right); root->right=invertTree(t原创 2017-01-11 19:15:24 · 223 阅读 · 0 评论 -
Add Digits
方法一:这道题让我们求树根,所谓树根,就是将大于10的数的各个位上的数字相加,若结果还大于10的话,则继续相加,直到数字小于10为止。那么根据这个性质,我们可以写出一个解法如下:class Solution {public: int addDigits(int num) { while (num / 10 > 0) { int sum原创 2017-01-11 16:38:02 · 229 阅读 · 0 评论 -
Find the Difference(类似 Single Number)
#include#include#includechar findTheDifference(char* s, char* t) { int i, j,s1=0,s2=0; for (i = 0; i < strlen(s)+1; i++) { s1 += s[i]; s2 += t[i]; } return(char)(s2 - s1);}int main(){原创 2017-01-11 16:14:11 · 214 阅读 · 0 评论 -
二叉树深度(最大和最小)
/**最大深度 * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */int maxDepth(struct TreeNode* root) { i原创 2017-01-11 15:49:52 · 445 阅读 · 0 评论 -
Sum of Two Integers计算机如何实现两个数相加
int getSum(int a, int b) { int sum = a; while (b != 0) { sum = a ^ b;//calculate sum of a and b without thinking the carry b = (a & b) << 1;//calculate the原创 2017-01-10 20:13:27 · 556 阅读 · 0 评论 -
Single Number奇数个数 偶数个数
nt singleNumber(int a[], int n) { int num = 0; for (int i = 0; i < n; ++i) { num ^= a[i]; } return num; }解释:What if the input is {1,1,2,2,0}? 就是两个一样的异或就是0,有一个不一样的异或出来就原创 2017-01-10 19:51:59 · 487 阅读 · 0 评论 -
Nim Game 博弈游戏
这句话很重要:你俩一个套路Both of you are very clever and have optimal strategies for the game当n∈[1,3]时,先手必胜。当n == 4时,无论先手第一轮如何选取,下一轮都会转化为n∈[1,3]的情形,此时先手必负。当n∈[5,7]时,先手必胜,先手分别通过取走[1,3]颗石头,可将状态转化为n == 4时的原创 2017-01-10 16:42:33 · 285 阅读 · 0 评论 -
Find All Numbers Disappeared in an Array
//注意:数组个数与最大数一致#include#include#includeint* findDisappearedNumbers(int* nums, int numsSize, int*returnSize) { int *zss = (int *)malloc(sizeof(int)*numsSize); int *zs = (int *)malloc(sizeof(int)*n原创 2017-01-10 16:19:33 · 255 阅读 · 0 评论 -
Island Perimeter 求四邻域有几个1的问题
子函数:int islandPerimeter(int** grid, int gridRowSize, int gridColSize) { int i, j, k=0; for (i = 0; i < gridRowSize; i++) { //grid[i] = (int*)malloc(sizeof(int) * gridRowSize);有就错了 for (j = 0原创 2017-01-09 22:26:16 · 472 阅读 · 1 评论 -
hamming distance二进制数异或有几个1
三种办法对应运行时间:#includeint hammingDistance(int x, int y) { scanf("x=%d,y=%d", &x, &y);//重定义 int temp[33] = {0}, temp2[33] = {0}; int i = 0, j = 0, sum = 0, k=0,a = 0,b=0; bool mask=0; while (x)原创 2017-01-07 19:23:55 · 294 阅读 · 0 评论 -
Reverse String反向输出字符串
首先:runtime error的原因 一种是内存错误吧,例如访问了未定义的某块内存空间,int arr[8];但是访问了arr[8]这个元素。或者int *n = NULL; *n = 10;这种也会报内存错吧。还有就是有endless loop吧,可能没有能使程序跳出某循环的条件存在。方法一:程序:char* reverseString(char* s) { int i,原创 2017-01-09 18:57:40 · 405 阅读 · 0 评论 -
Ransom Note
bool canConstruct(char* ransomNote, char* magazine) { unsigned int rason[256]={0}; unsigned int mag[256]={0}; int i=0; for(i=0;i<strlen(ransomNote);i++) { rason[ransomNote[原创 2017-01-13 21:45:52 · 595 阅读 · 0 评论 -
Minimum Moves to Equal Array Elements
方法一:找规律直接输出int minMoves(int* nums, int numsSize) { int i,sum,tempmin; sum=tempmin= nums[0];//记住一定要拿到外面,否则循环一次付一次nums[0],sum也要拿到外面,要不然少一个nums[0] for (i = 1; i < numsSize; i++) { if (nums[i]原创 2017-01-13 20:08:38 · 252 阅读 · 0 评论 -
Move Zeroes
方法一:C++遇见非0往前交换,0往后窜swap时要包含以下两个:#includeusing namespace std;子函数:void moveZeroes(int* nums, int numsSize) { int last = 0, cur = 0; while (cur < numsSize) { if (nums[cur] != 0) { swap(原创 2017-01-11 20:47:30 · 237 阅读 · 0 评论