From d78ed44e0cf676fd2fd89ac43c04d340d0f9be62 Mon Sep 17 00:00:00 2001 From: Sean Date: Fri, 11 Oct 2019 08:42:37 +0800 Subject: [PATCH 1/2] fix bug in is_prime --- is_prime.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/is_prime.py b/is_prime.py index 57e4ccf..1621985 100644 --- a/is_prime.py +++ b/is_prime.py @@ -42,7 +42,7 @@ def isPrime3(n): if i * i > n: return True if n % i == 0: - return Fals + return False #方法四 From 984abe12c37496666fa8c21ad48c3f742c79a112 Mon Sep 17 00:00:00 2001 From: Sean Date: Fri, 11 Oct 2019 09:26:18 +0800 Subject: [PATCH 2/2] int_divede dynamic programming design and reduce time consumption --- int_divide.py | 2 +- int_divide3.py | 31 +++++++++++++++++ same_element_in_list.md | 74 ++++++++++++++++++++++------------------- 3 files changed, 71 insertions(+), 36 deletions(-) create mode 100644 int_divide3.py diff --git a/int_divide.py b/int_divide.py index 288c907..6a8a13d 100644 --- a/int_divide.py +++ b/int_divide.py @@ -22,7 +22,7 @@ def divide(m,r,out): m1-=1 return False - + n=6 out=[] divide(n-1,n,out) diff --git a/int_divide3.py b/int_divide3.py new file mode 100644 index 0000000..3f0cc50 --- /dev/null +++ b/int_divide3.py @@ -0,0 +1,31 @@ +""" +将一个整数,分拆为若干整数的和。例如实现: +4=4 +4=3+1 +4=2+2 +4=2+1+1 +4=1+1+1+1 + +所以divide(4) == 5 + +这里会将输出这样的分法有多少种。采用动态规划计算,提高速度 +参考链接中的C++版本 +https://github.com/Sean16SYSU/Algorithms4N/blob/master/Dynamic%20Programming/%E6%95%B4%E6%95%B0%E5%88%92%E5%88%86/Interger_dividence_dp.cpp +""" +def divide(n): + arr = [[0 for i in range(n+1)] for j in range(n+1)] + for i in range(1, n+1): + arr[i][i] = 1 + for i in range(1, n+1): + for j in range(1, n+1): + if i < j: + arr[i][j] = arr[i][i] + elif i == j: + arr[i][j] = 1 + arr[i][j-1] + else: + arr[i][j] = arr[i][j-1] + arr[i-j][j] + return arr[n][n] + + +if __name__=="__main__": + print(divide(4)) \ No newline at end of file diff --git a/same_element_in_list.md b/same_element_in_list.md index 7097fe0..dd7704a 100644 --- a/same_element_in_list.md +++ b/same_element_in_list.md @@ -1,57 +1,61 @@ -#问题 +# 问题 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。 例如:[1,2,2,2,3,3,3,3,3]-->[1,2,3] -#解决思路 +## 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 -**更新此步方法:**上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() +**更新此步方法:** 上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() 然后通过for获取key,得到一个新的列表,就是没有重复元素的列表 -#解决(Python) +## 解决(Python) - #!/usr/bin/env python - #coding:utf-8 - - - def count_element(one_list): - element_number = {} - for e in one_list: - number = one_list.count(e) #数出某个元素的个数 - element_number[e] = number #生成类似:{1:1,2:3,3:5}的结果,key-element,value-元素的个数 - return element_number +```python +#!/usr/bin/env python +#coding:utf-8 - #应用collections.Counter()实现count_element(one_list)函数功能,为了便于调试和说明,在另外一个函数里面使用 - - from collections import Counter - def count_element2(one_list): - return Counter(one_list) +def count_element(one_list): + element_number = {} + for e in one_list: + number = one_list.count(e) #数出某个元素的个数 + element_number[e] = number #生成类似:{1:1,2:3,3:5}的结果,key-element,value-元素的个数 + return element_number - - def no_repeat_element(element_number): #element_number是count_element(one_list)的返回值 - no_repeat_list = [key for key in element_number] - return no_repeat_list - - if __name__=="__main__": - - ls = ["a","a","b","b",'b','c','c'] - el_num=count_element(ls) - print el_num - no_repeat = no_repeat_element(el_num) - print no_repeat +#应用collections.Counter()实现count_element(one_list)函数功能,为了便于调试和说明,在另外一个函数里面使用 -#解决(python) +from collections import Counter + +def count_element2(one_list): + return Counter(one_list) + + +def no_repeat_element(element_number): #element_number是count_element(one_list)的返回值 + no_repeat_list = [key for key in element_number] + return no_repeat_list + +if __name__=="__main__": + ls = ["a","a","b","b",'b','c','c'] + el_num=count_element(ls) + print el_num + no_repeat = no_repeat_element(el_num) + print no_repeat + +``` + +## 解决(python) 无重复元素个数统计,只有新数组输出 - list_a = [1,1,2,2,2,3,3,3,3,3,] - list_b = list(set(list_a)) +```python +list_a = [1,1,2,2,2,3,3,3,3,3,] +list_b = list(set(list_a)) +``` -##qiwsir#gmail.com (# to @) +## qiwsir#gmail.com (# to @)