Go语言中文网 为您找到相关结果 14

Let's go to play (模拟)

Let's go to play Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 771 Accepted Submission(s) : 213 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description Mr.Lin would like to hold a party and invite his friends to this party. He has n friends and each of them can come in a sp...阅读全文

博文 2016-04-02 17:00:05 yanghui07216

hdu 5546 Ancient Go【dfs】【思维】

Ancient Go Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 604 Accepted Submission(s): 221 Problem Description Yu Zhou likes to play Go with Su Lu. From the historical research, we found that there are much difference on the rules between ancient go and modern go. Here is the rules for ancient g...阅读全文

博文 2016-01-27 16:00:01 mengxiang000000

hdu 5546 Ancient Go

题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5546 题意: 有两个人在一个9*9的棋盘里下棋,A 是的棋子为x , B为 o ,“.” 的意思为空。 问 A的下一个 能否将 B 的棋子杀死, (跟围棋差不多)。 解题大意: dfs 判联通块的周围是否只有 一个 ‘ . ’. #include #include #include using namespace std; char Map[20][20]; int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}},visit[20][20],ans,ant; void dfs(int x,int y) { i...阅读全文

博文 2016-01-27 16:00:01 wangkemingshishuaige

【LeetCode】Reverse Integer Go语言实现

问题描述 Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 题意很明确,将一个整数反转输出。 思路 首先不用考虑用库函数先转为字符串再反转的方式,这根本不是算法。 整体解决思路为,依次取出整数的每一位数,然后反转,再组装成整数即可。有几个点需要考虑: 取末位数。 num % 10 即可。 去掉末位数。 num / 10 即可。 组装整数。定义 sum := 0, 循环数字序列,每次 sum = sum * 10 + 数字即可 溢出问题。问题规定了整数为32位,因此最大值为0x7FFFFFFF, 最小值为-0x80000000 Go实现 用时6ms, 击败20%...阅读全文

博文 2016-11-25 10:00:08 tracker_w

HDOJ 3715 - Go Deeper 二分+2-sat判断

题意: 有这么一个过程: go(int dep, int n, int m) begin output the value of dep. if dep < m and x[a[dep]] + x[b[dep]] != c[dep] then go(dep + 1, n, m) end 其中x[]的值为0或1...c[]的值为0或1或2....现在告诉a[],b[],c[]..问这个过程最深可能是多少? 题解 看这个过程..实际上当在m层没办法下去了.更深的层肯定也到不了了...所以满足单调性...先读入a[],b[],c[]...再二分M...构图..2-sat..tarjan判断.... Program: #include #include #inc...阅读全文

博文 2015-12-22 06:00:00 kk303

HDU 3715 Go Deeper 二分 + 2-sat

题目: http://acm.hdu.edu.cn/showproblem.php?pid=3715 题意: 给定一段递归伪代码,问执行这段伪代码递归的最深层数 思路: 二分枚举答案用2-sat判定是否可行。具体建图如下:如果c[i] == 0,那么a[i] OR b[i],如果c[i] == 1,那么(a[i] AND b[i]) OR (~a[i] AND ~b[i]),如果c[i] == 2,那么NOT(a[i] AND b[i]),然后强连通缩点判断i和~i是否在同一个环内 #include #include #include #include #include #include 阅读全文

博文 2016-10-07 04:00:02 discreeter

【Golang语言】LeetCode1122. Relative Sort Array

给你两个数组,arr1 和 arr2, arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。https://leetcode-cn.com/problems/relative-sort-array 输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6] 输出:[2,2,2,1,4,3,3,9,6,7,19] 题意:arr2给你自定义了一个数字大小顺序,将arr1里的数按照2中定义的规则拍一拍。 思路:统计1中的数字出现的次数,遍历2,依次取出1中的数,按照统计的...阅读全文

博文 2019-08-25 09:03:09 努力的C

【Golang】LeetCode442Find All Duplicates in an Array

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3] 题意:关键就是把数组中的元素当成是索引来看就行。如果索引处的数字出现过一次,就给-1,因为只会出现两次,如果第二次再出现,那么对应位置的值就会是小于0的,直接加到结果集中就行。一开始我还想着出现过一次-1,再出现一次再*-1,这样最后再遍历一次找到小于0的即可,但是发现有些问题,有些数字没出现过会被误杀。 O(N)时间,O(1)空间 func findDuplicates(nums []int) []int { resul...阅读全文

博文 2019-08-25 19:03:42 努力的C

leetcode_1221

Golang: 思路:这题题意有点问题,输入也不是平衡字符串,对输出也有要求。简单来说,定义一个sum=0,从0开始往下走,找到一个平衡字符串,sum+1。然后从剩下的字符串里继续走,直到找完整个字符串为止。 代码如下: func balancedStringSplit(s string) int { i:=0 count:=0 sum:=0 for i<=len(s)-1{ if s[i]=='L'{ sum++ }else{ sum-- } if sum==0 { count++ } i++ } return count ...阅读全文

博文 2020-02-14 00:32:56 淳属虚构

leetcode_9

Golang: 思路:因为题意希望不将整数转变为字符串,所以这里的步骤变成:先实现整数反转,然后再将反转后的整数与原先的整数对比 注意:其实这里应该注意反转后的整数会不会出现溢出,比如:2147483647反转为7463847412,但这里我测试了下,go好像不会出现溢出,所以我没有做这样的处理 func isPalindrome(x int) bool { target:=x temp:=0 if x<0 { return false } for{ if x!=0 { temp=temp*10+x%10 x=x/10 }else{ break } } if temp==target { return true }else { return false } ...阅读全文

博文 2020-01-11 06:32:51 淳属虚构

leetcode_1029

Golang: 思路:还是照抄我的题解。 这题题意很明显是贪心了,那么以什么作为尺度呢? 毫无疑问的,应该是一个人去A点和去B点的花费之差 简单来说,我们看[1,1000],那么这个人应该去A点,因为会便宜999元 再来看[10,20],[1,1000],那么第二个人应该去A点,第一个人去B点。因为第一个人去A去B最多便宜10元,第二个人去A去B则可能便宜999元,这就是贪心在这一题的尺度了。 代码如下: type intS [][]int func (s intS) Len() int { return len(s) } func (s intS) Less(i, j int) bool { return s[i][2] > s[j][2] } func (s intS) Swap(i, ...阅读全文

博文 2020-02-19 15:32:46 淳属虚构

leetcode_31

Golang: 思路:这题难度在于理解题意,什么叫下一个排列,简单来说,给定一个数组[1,2,3,4,5],我们可以把它看成一个整数12345,那么它的下一个排列也就是12354,即大于12345的最小的排列。解题过程就是,从后往前,找到非递增的第一个数,再从后往前,将它从它以后的大于它的第一个数交换,然后反转它后面的剩下的数组部分。举个比较有代表性的例子,[3,6,5,4,3],从后往前找到非递增的第一个数3,位置是arr[0],再从后往前,将它从它以后的大于它的第一个数(也就是4)交换,交换完以后,数组变成[4,6,5,3,3],可以看到,4后面的部分都是递减的,于是我们反转这些部分即可。 代码如下: func nextPermutation(nums []int) { if len(n...阅读全文

博文 2020-02-03 19:32:40 淳属虚构

leetcode_622

Golang: 思路:直接用数组实现了,感觉有点不太符合题意 代码如下: type MyCircularQueue struct { stack []int length int } /** Initialize your data structure here. Set the size of the queue to be k. */ func Constructor(k int) MyCircularQueue { return MyCircularQueue{ stack:[]int{}, length:k, } } /** Insert an element into the circular queue. Return true if the operation is succe...阅读全文

博文 2020-04-02 09:32:58 淳属虚构

leetcode_147

Golang: 思路:既然是链表的插入排序,那就按照题意来,做插入排序 代码如下: func insertionSortList(head *ListNode) *ListNode { if head==nil||head.Next==nil { return head } temp1:=head res:=head temp2:=head.Next temp1.Next=nil for temp2!=nil{ //预留下一个点 tNext:=temp2.Next temp2.Next=nil var p1 *ListNode p2:=res for p2!=nil&&temp2.Val>p2.Val{ p1=p2 p2=p2.Next } temp2.Next=p2 if p1==nil ...阅读全文

博文 2020-03-01 15:32:43 淳属虚构