leetcode
flowertree花树
恰同学少年,风华正茂。
展开
-
[leetcode]Search Insert Position
暴力可以直接水过。用二分可以过。注意的是插入的点可能不在数组中。int searchInsert(int* nums, int numsSize, int target) { int mid; int left = 0, right = numsSize - 1; while(left <= right) { mid = (left + ri原创 2015-11-03 20:24:37 · 172 阅读 · 0 评论 -
leetcode Minimum Depth of Binary Tree 宽度优先搜索bfs
求出从树根到最近的叶子节点路程,就是求树的最小高度。简单的bfs层次遍历,直到遍历到叶子节点。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) :原创 2015-11-09 22:04:07 · 168 阅读 · 0 评论 -
leetcode Intersection of Two Linked Lists 找出两个链表相交的节点
相交的地方之后长度肯定相等,换句话说,只有两个链表从后看长度相等的地方才能有相交的点,实现有点小复杂,但很简单。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NU原创 2015-11-09 21:47:12 · 168 阅读 · 0 评论 -
leetcode Path Sum 深度优先搜索dfs
题意 :从二叉树的根到叶子遍历找出条路径的权值之和等于参数sum。思路 :对这颗树进行dfs或bfs,我用的dfs注意点 :1 .权值相等还得判断该节点是不是叶子节点 2. 注意回溯/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;原创 2015-11-09 20:39:59 · 212 阅读 · 0 评论 -
leetcode First Bad Version 二分查找
二分查找的典型运用,一段范围为false,一段为true,这个题为寻找false变为true的那个点。注意二分查找的边界的处理,还有while里面的条件 。二分查找小技巧:(left + right) / 2 可能相加会溢出,所以应该这样(right - left) / 2 + left。// Forward declaration of isBadVersion API.bool is原创 2015-11-09 22:57:06 · 186 阅读 · 0 评论 -
leetcode Palindrome Number 判断回文数
判断一个数是不是回文数,想不到什么高端做法,逐位分解然后再合成倒序的数,在判断和前数是不是相等,注意,负数都不是回文数。class Solution {public: bool isPalindrome(int x) { if(x < 0) return false; int temp; int mark;原创 2015-11-09 20:56:16 · 213 阅读 · 0 评论 -
leetcode Power of Two 判断是否是二的幂
判断一个数是否是二的幂,有个小坑,会出现小于等于0得数,加个判断就行了,利用位运算,二的幂为100......00,和n - 1(011.....11)相与得0,为0的话是二的幂,不为0则不是。多利用位运算的特点,比如编程之美中判断一个数二进制有多少个一,速度最快的是位运算,一直x & (x - 1)。原创 2015-11-09 17:30:17 · 190 阅读 · 0 评论 -
leetcode Reverse Linked List 单链表反转版本二
没想到这么快就1A版本二,链表实现的操作。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pub原创 2015-11-09 17:16:59 · 210 阅读 · 0 评论 -
leetcode Reverse Linked List 单链表反转版本一
这个题是把单链表反转,最开始的想法是通过链表指针操作从结构上实现反转,但是想到一种更简单的,就是用数组存储链表的值,然后倒序再赋值给链表,得到反转的结果。等下去试一下链表操作的版本二。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; *原创 2015-11-09 17:09:45 · 224 阅读 · 0 评论 -
[leetcode]Remove Duplicates from Sorted List 有序链表删除重复元素
很水的一道题,两个指针关系处理好就行。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDuplicates(struct ListNode* head) {原创 2015-11-04 13:45:20 · 180 阅读 · 0 评论 -
[leetcode]contains duplicate
问 数组中是否有重复的元素。Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false i原创 2015-11-03 20:54:49 · 167 阅读 · 0 评论 -
leetcode283 MoveZeros将数组中的0挪到数组尾部
闲的没事,搞个博客玩玩,最近要找工作,就上leetcode玩玩,做的第一个题。题意:把0挪到数组的最右边。For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].思路:每个数字都有挪后自己的位置,即前面几个零就往前挪几位,用一个m原创 2015-11-02 15:54:30 · 219 阅读 · 0 评论