1 wolegequ 2019-05-09 23:11:14 +08:00 via Android ![]() 跟 py 无关,位运算 |
3 lv2016 2019-05-09 23:14:04 +08:00 建立一个列表,从第一个数开始搜索,如果在列表里则删除,不在则加入,最后剩的数就是只出现一次的 |
![]() | 5 megachweng 2019-05-09 23:18:49 +08:00 via iPhone counter? |
6 icreeper 2019-05-09 23:23:18 +08:00 via iPhone 数组里所有数取异或,这题在 leetcode 有 |
![]() | 7 megachweng 2019-05-09 23:26:45 +08:00 ``` from collections import Counter l = [1, 1, 2, 3, 4, 5, 5, 4] c = Counter(l) print(c.most_common()[-1][0]) >>> 3 ``` |
![]() | 8 xabc 2019-05-09 23:37:39 +08:00 数据放入集合,完成 集合元素具有唯一性 |
![]() | 9 mashpolo 2019-05-09 23:43:45 +08:00 via iPhone 二进制的异或最快 |
10 justfortest 2019-05-10 00:29:21 +08:00 遍历异或运算就行 |
![]() | 11 CEBBCAT 2019-05-10 00:44:23 +08:00 via Android 不仅菜,还不会搜索…… 上升空间有限啊,加油吧 |
12 azh7138m 2019-05-10 01:25:08 +08:00 via Android ![]() 这不是菜,是蔡 |
![]() | 13 inhzus 2019-05-10 01:46:07 +08:00 via Android ![]() reduce(lambda x, y: x ^ y, array) |
![]() | 14 dangyuluo 2019-05-10 02:00:06 +08:00 pythonic 的办法是用 set 和 diff |
![]() | 15 huntzhan 2019-05-10 02:01:41 +08:00 ![]() 蔡得口交 |
![]() | 16 Nimrod 2019-05-10 02:41:24 +08:00 via Android 这种题就是你做一次以后都会做了 |
![]() | 17 20015jjw 2019-05-10 02:58:05 +08:00 via Android xor |
18 luclee1996 2019-05-10 06:03:13 +08:00 via Android |
19 luozic 2019-05-10 07:26:53 +08:00 via iPhone python 可以用异或或者位运算,空间复杂度是 O(1 ),不过时间复杂度 O(n)。 |
![]() | 20 jmc891205 2019-05-10 07:45:32 +08:00 改下题目: 一组数据中只有一个数字出现了一次。其他所有数字都是出现了多次的。 请找出这个数字。 还有什么讨巧的方法吗? |
![]() | 21 robot9 2019-05-10 08:17:45 +08:00 XOR |
23 luozic 2019-05-10 08:47:19 +08:00 via iPhone 搞个树去处理,这种不就是压缩的算法? |
![]() | 26 wlkq 2019-05-10 09:09:29 +08:00 使用 php 的函数实现了一下。python 也有对应的函数吧 $a = [1,2,3,4,5,6,7,8,9,10,1,2,3,4,6,7,8,9,10]; $a_r = array_reverse($a,true); $a_f = array_flip($a); $a_r_f = array_flip($a_r); $result = []; foreach ($a_f as $k => $v){ if($v != $a_r_f[$k]) continue; $result[] = $k; } // 输出 $result : [5] |
![]() | 27 anyuhanfei 2019-05-10 09:11:20 +08:00 @jmc891205 用桶排序的一部分方法应该就可以吧,统计出每个元素出现的个数,数量为 1 的就是答案 |
![]() | 28 bxb100 2019-05-10 09:32:21 +08:00 via Android ^ over |
29 lshu 2019-05-10 09:33:21 +08:00 按照我理解的题意 x1+x2+...+xn+x(n+1) = s1 根据题意 我们令 前 n 个为成对的 则 2(x1+x2+...+x(n/2)) + x(n+1) = s1 同除 2 得到公式 1 x1+x2+...+x(n/2) + x(n+1)/2 = s1/2 然后去重求和得到公式 2 x1+x2+...+x(n/2) + x(n+1) = s2 两式相减 结果 = 2*s2 - s1 程序如下 l = [1, 1, 2, 2, 7, 4, 5, 5, 4] print(2 * sum(set(l)) - sum(l)) == 7 |
![]() | 30 bengxy 2019-05-10 09:42:48 +08:00 ![]() 为啥大家对新人程序员这么不友好,不都是这么过来的吗? 只有有几个提出实质解法的,其他都在喷,感情你生下来就会异或运算? |
![]() | 31 inhzus 2019-05-10 09:47:43 +08:00 via Android |
![]() | 32 marsgt 2019-05-10 10:08:19 +08:00 贴个 leetcode 中文的链接吧: https://leetcode-cn.com/problems/single-number/ |
![]() | 33 dovme 2019-05-10 10:16:43 +08:00 交换律:a ^ b ^ c <=> a ^ c ^ b 任何数于 0 异或为任何数 0 ^ n => n 相同的数异或为 0:n ^ n => 0 |
![]() | 34 southsala 2019-05-10 10:23:05 +08:00 Java 实现就这个样子吧,遍历一遍异或运算。 异或刚好满足这个题目需求,这个题目考点应该就是异或运算。 两个相同的数比如 88 88,二进制是 1011000 1011000,异或位运算(相同为 0)结果 0000000,也就是 0。 public static int getResult(int[] nums){ int result = 0; for (int i = 0;i < nums.length ; i++){ result = result ^ nums[i]; } return result; } |
![]() | 35 Vegetable 2019-05-10 10:25:55 +08:00 leetcode 里这题目好像还是不是 easy 呢.其实就是位运算. |
![]() | 36 dovme 2019-05-10 10:33:38 +08:00 @southsala #34 public static int getResult(int[] nums){ for (int i = 1;i < nums.length ; i++){ nums[0] ^= nums[i]; } return result; } |
![]() | 37 dovme 2019-05-10 10:36:26 +08:00 @dovme #36 public static int getResult(int[] nums){ for (int i = 1;i < nums.length ; i++){ nums[0] ^= nums[i]; } return nums[0]; } |
![]() | 38 Achilless 2019-05-10 10:38:29 +08:00 s = [1, 1, 2, 2, 3, 4, 4] for i in s: s.remove(i) if i in s: continue else: print(i) break |
![]() | 39 zzzmj 2019-05-10 11:50:48 +08:00 ....... 我感觉就算不知道 异或,纯数学应该也可以想到吧 sum(set(list)) * 2 - sum(list) |
40 chefdd 2019-05-10 15:48:12 +08:00 异或 |
![]() | 41 zdnyp 2019-05-10 15:56:34 +08:00 >>> l = [1,2,3,4,1,2,3] >>> for i in l: ... if l.count(i) == 1: ... print(i) ... 4 >>> list 没有 count 方法吗? |
42 exonuclease 2019-05-10 15:57:36 +08:00 via iPhone 异或一遍 |
43 balaWgc 2019-05-10 16:07:56 +08:00 leetcode 上有,之前做过,异或遍历可得 |
44 lyc1116 2019-05-10 16:27:47 +08:00 在数组有序的前提下,复杂度能够优化到 O(logn), 思路是二分查找 |
![]() | 45 c4f36e5766583218 2019-05-10 17:54:11 +08:00 这个三角函数我不会! |
46 brainfxxk 2019-05-10 17:57:07 +08:00 我觉得这种题真的很无聊... |
47 harpy 2019-05-11 00:27:21 +08:00 楼主既然想要做软件开发,还是要继续努力啊,不用位运算,这样的题目也不应该被难住。。可以想象面试官当时的表情。。。 |