
leetcode
Ale_li
知人力有穷尽时,临大难而从容,方是圣人之勇
展开
-
day30
func isMatch(s string, p string) bool { dp := make([][]bool,len(s)+1) for i:= 0;i<len(s)+1;i++{ dp[i] = make([]bool,len(p)+1) } dp[0][0] = true for i:= 1;i<len(s)+1;...原创 2020-03-30 21:59:28 · 130 阅读 · 0 评论 -
day29
func canCompleteCircuit(gas []int, cost []int) int { all,start,have,tmp := 0,0,0,0 for i := 0;i<len(gas);i++{ tmp = gas[i]-cost[i] have += tmp if tmp<0&&...原创 2020-03-29 21:10:19 · 80 阅读 · 0 评论 -
day28
func canJump(nums []int) bool { i,j := len(nums)-2,0 for i>=0 { if nums[i]>j{ i-- j = 0 } else { i-- j++ } }...原创 2020-03-28 22:24:23 · 97 阅读 · 0 评论 -
day27
func findContentChildren(g []int, s []int) int { mg := NewMinHeapByList(g) ms := NewMinHeapByList(s) var res int gi,si := mg.Delete(),ms.Delete() for { if gi<=si { ...原创 2020-03-27 22:36:48 · 106 阅读 · 0 评论 -
day26
func isSubsequence(s string, t string) bool { ptr := 0 for i:=0;i<len(t)&&ptr<len(s);i++ { if s[ptr] == t[i] { ptr++ } } return ptr==len(s)}...原创 2020-03-26 19:39:02 · 89 阅读 · 0 评论 -
day25
func maxProfit(prices []int) int { var left,right,res int for left<len(prices)&&right<len(prices) { for left<len(prices)-1&&prices[left]>prices[left+1] {...原创 2020-03-25 20:53:19 · 109 阅读 · 0 评论 -
day24
var last,first, second *TreeNodefunc recoverTree(root *TreeNode) { last, first, second = nil, nil, nil dfs(root) first.Val, second.Val = second.Val, first.Val}func dfs(root *TreeNode) { if r...原创 2020-03-24 23:22:33 · 90 阅读 · 0 评论 -
day23
func generateTrees(n int) []*TreeNode { if n==0{ return []*TreeNode{} } return MygenerateTrees(1,n)}func MygenerateTrees(start,end int) []*TreeNode { if start>end { ...原创 2020-03-23 22:43:17 · 107 阅读 · 0 评论 -
day22
func inorderTraversal(root *TreeNode) []int { if root == nil { return nil } left := inorderTraversal(root.Left) arr := append(left,root.Val) right := inorderTraversal(ro...原创 2020-03-22 22:31:51 · 90 阅读 · 0 评论 -
day21
func maxDepth(root *TreeNode) int { if root == nil { return 0 } Left := maxDepth(root.Left) Right := maxDepth(root.Right) if Left>Right { return Left+1 } e...原创 2020-03-21 21:58:53 · 100 阅读 · 0 评论 -
day20
func isSymmetric(root *TreeNode) bool { return MyisSymmetric(root,root)}func MyisSymmetric(node1,node2 *TreeNode) bool { if node1 == nil || node2 == nil { if node1 == nil &&...原创 2020-03-20 22:22:07 · 113 阅读 · 0 评论 -
day19
func isSameTree(p *TreeNode, q *TreeNode) bool { if p != nil && q != nil { left := isSameTree(p.Left,q.Left) right := isSameTree(p.Right,q.Right) return left&&...原创 2020-03-19 20:28:20 · 109 阅读 · 0 评论 -
day18
func isMatch(s string, p string) bool { slen, plen := len(s), len(p) if slen == 0 { if plen%2 != 0 { return false } for j := 1; j < plen; j += 2 { if p[j] != '*' { return false ...原创 2020-03-18 23:59:08 · 89 阅读 · 0 评论 -
day17
func longestPalindrome(s string) string { if len(s) <= 1 { return s } str := make([]byte,len(s)*2+1) maxLen,ptr := 0,0 for i:=0;i<len(s);i++ { str[i*2+1] = s...原创 2020-03-17 18:53:07 · 112 阅读 · 0 评论 -
day16
func lengthOfLongestSubstring(s string) int { start,length,i := 0,0,0 mp := make(map[byte]int) for ;i<len(s);i++{ if index,ok := mp[s[i]];ok&&index>=start { if i-start>=lengt...原创 2020-03-17 01:11:34 · 84 阅读 · 0 评论 -
day15
func isValid(s string) bool { stack := NewStack() for _,v := range s { switch v { case '(': stack.Push('(') case '[': stack.Push('[') case '{': stack.Push('{'...原创 2020-03-15 22:39:13 · 140 阅读 · 0 评论 -
day14
func longestCommonPrefix(strs []string) string { if len(strs) == 0{ return "" } ptr := 0 for ptr<len(strs[0]) { char := strs[0][ptr] for _,v := range strs{ ...原创 2020-03-14 21:19:08 · 79 阅读 · 0 评论 -
day13
func romanToInt(s string) int { mp := map[byte]int { 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, 'I'+'V':4, 'I...原创 2020-03-12 22:06:35 · 73 阅读 · 0 评论 -
day12
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func mergeKLists(lists []*ListNode) *ListNode { if (len(lists)==0) { retur...原创 2020-03-12 21:29:10 · 98 阅读 · 0 评论 -
day11
func removeNthFromEnd(head *ListNode, n int) *ListNode { ptr,end := head,head for i:=0;i<n;i++{ end = end.Next } if end == nil { return head.Next } for end.N...原创 2020-03-10 23:30:20 · 97 阅读 · 0 评论 -
day10
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode { if l1 == nil { return l2 } var ( flag bool res = l1 ptr = l1 ) for l2 != nil && l1 != nil { l1.Val += l2.Val if fl...原创 2020-03-10 15:41:03 · 85 阅读 · 0 评论 -
day9
快慢指针//v1func hasCycle(head *ListNode) bool { if head == nil { return false } slow,fast := head,head.Next for fast != nil { if slow == fast { return true } if fast.Next == nil { ...原创 2020-03-09 22:27:30 · 207 阅读 · 0 评论 -
day8
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { if head==nil|| head.Next== nil { ...原创 2020-03-08 19:18:04 · 89 阅读 · 0 评论 -
day7
type ListNode struct { Val int Next *ListNode}//类似于归并排序的合并算法func MergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { res := &ListNode{} p := res for l1!= nil&&l2!=nil{ if l1....原创 2020-03-06 22:52:56 · 70 阅读 · 0 评论 -
day6
package day6import ( "math")/** * 题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(...原创 2020-03-06 22:14:49 · 152 阅读 · 0 评论 -
day5
双指针func threeSumClosest(nums []int, target int) int { sort.Ints(nums) res := nums[0]+nums[1]+nums[len(nums)-1]-target for i:=0;i<len(nums)-2;i++{ if i>0&&nums[i]==nums[i-1] { co...原创 2020-03-05 19:20:59 · 93 阅读 · 0 评论 -
day4
func ThreeSum1(nums []int) [][]int { sort.Ints(nums) res := make([][]int,0) for i:=0;i<len(nums)-2;i++{ if nums[i]>0 { break } if i>0&&nums[i]==nums[i-1] { continue }...原创 2020-03-04 20:10:23 · 93 阅读 · 0 评论 -
day3
func removeElement(nums []int, val int) int { var index int = 0 for _,v := range nums { if v != val { nums[index]=v index++ } } return index}原创 2020-03-02 22:05:33 · 92 阅读 · 0 评论 -
day2
func removeDuplicates(nums []int) int { if len(nums)==0 { return 0 } index := 0 for i:=1;i<len(nums);i++{ if nums[i]>nums[index] { index++ nums[index] = nums[i] } } return i...原创 2020-03-01 20:55:10 · 95 阅读 · 0 评论 -
day1
func twoSum(nums []int, target int) []int { numm := make(map[int]int,len(nums)) var ( index int ok bool ) for i,v := range nums{ if index,ok = numm[target-v];ok{ return []int{index,i} }...原创 2020-02-29 22:02:18 · 111 阅读 · 0 评论