Arrays--codility
lesson 2: Arrays
- exercise:
- Problem: Given array A consisting of N integers, return the reversed array.
def myreverse(A):
length = len(A)
for i in xrange(length//2):
A[i], A[length -i-1] = A[length - i-1], A[i]
return A
1. CyclicRotation------[100%]
Rotate an array to the right by a given number of steps.
A zero-indexed array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is also moved to the first place.
For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7]. The goal is to rotate array A K times; that is, each element of A will be shifted to the right by K indexes.
def re_enumerate(seq):
n = -1
length = len(seq)
for elem in reversed(seq):
yield length + n, elem
n = n - 1
def solution(A, K):
# write your code in Python 2.7
length = len(A)
if length < 2:
return A
shift_times = K%length
#print shift_times
tmp= A[-shift_times:]
#print tmp
tmp.extend(A[:- shift_times])
return tmp
#for idx, ai in re_enumerate(A):
# if idx >= shift_times:
# A[idx] = A[idx-shift_times]
#
# else:
# A[idx] = tmp[idx]
#return A
- 要注意边界条件,考虑数组的长度少于旋转的次数,以及只有一个元素和数组为空
- 当有除法的时候,注意是否除以零
def solution(A, K):
# write your code in Python 2.7
length = len(A)
#print length
#print K
if K == 0 or length == 0 or length == 1:
return A
if K > length:
K %= length
#print K
tmp = [0]*K
#print tmp
for i in xrange(K):
tmp[i] = A[length - K + i]
tmp.extend(A[:-K])
return tmp
2. OddOccurrencesInArray ---[100%]
Find value that occurs in odd number of elements.
A non-empty zero-indexed array A consisting of N integers is given. The array contains an odd number of elements, and each element of the array can be paired with another element that has the same value, except for one element that is left unpaired.
For example, in array A such that:
A[0] = 9 A[1] = 3 A[2] = 9
A[3] = 3 A[4] = 9 A[5] = 7
A[6] = 9
- the elements at indexes 0 and 2 have value 9,
- the elements at indexes 1 and 3 have value 3,
- the elements at indexes 4 and 6 have value 9,
- the element at index 5 has value 7 and is unpaired.
解题思路:
- 将数组排序,相同的数会在一起,比较前后两个数是否相同
- 偶数个数的,继续测试下一个数,找到单独的一个数,返回
- 当直到数组最后,还有没有找到单独的一个元素,我们得返回最后一个元素,因为我们统计的一直的是last 元素
- 注意临界条件,只有一个元素
- O(N)时间复杂度
def solution(A):
# write your code in Python 2.7
if len(A) == 1:
return A[0]
A.sort()
#print A
last_a,cnt = A[0],1
#print last_a
for ai in A[1:]:
if ai == last_a:
cnt += 1
else:
if cnt%2 != 0:
return last_a
last_a,cnt = ai,1
return A[-1]
def solution(A):
# write your code in Python 2.7
if len(A) < 2:
return A[0]
A.sort()
last_a, cnt = A[0], 1
for a in A[1:]:
if last_a == a:
cnt += 1
else:
if cnt%2 == 0 :
last_a, cnt = a, 1
else:
return last_a
return A[-1]
Arrays--codility的更多相关文章
- Codility NumberSolitaire Solution
1.题目: A game for one player is played on a board consisting of N consecutive squares, numbered from ...
- codility flags solution
How to solve this HARD issue 1. Problem: A non-empty zero-indexed array A consisting of N integers i ...
- GenomicRangeQuery /codility/ preFix sums
首先上题目: A DNA sequence can be represented as a string consisting of the letters A, C, G and T, which ...
- Java程序员的日常—— Arrays工具类的使用
这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...
- 使用 Arrays 类操作 Java 中的数组
Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴 ...
- 【转】java.util.Arrays.asList 的用法
DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ...
- System.arraycopy()和Arrays.copyOf()的区别
先看看System.arraycopy()的声明: public static native void arraycopy(Object src,int srcPos, Object dest, in ...
- 计算机程序的思维逻辑 (31) - 剖析Arrays
数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...
- No.004:Median of Two Sorted Arrays
问题: There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the ...
- [LeetCode] Intersection of Two Arrays II 两个数组相交之二
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
随机推荐
- python 黑客书籍 ——扫描+暴力破解
https://legacy.gitbook.com/book/germey/net-security/details 网络安全 介绍 构建一个端口扫描器 利用Pexpect模拟SSH连接 利用Pxs ...
- JAVA运行war包
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m java %JAVA_OPTS% ...
- 在js中做数字字符串补0
转自(http://blog.csdn.net/aimingoo/article/details/4492592) 通常遇到的一个问题是日期的“1976-02-03 HH:mm:ss”这种格式 ,我的 ...
- Java复习6异常处理
Java复习6.异常处理 20131005 前言: Java中的异常处理机制是非常强大的,相比C++ 来说,更加系统.但是我们开发人员没有很好的使用这一点.一些小的程序是没有什么问题的,但是对于大型项 ...
- 如何在非Spring管理的类中使用Spring加载的bean
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> < ...
- JQuery强大的操控标签能力
jquery选择器 $("#myId") 选择id为myId的元素 $(".myClass") 选择class为myClass的元素 ...
- Valgrind的Memcheck快速入门
一.前言 对于C/C++程序员来说,关于内存问题真是让人头痛不已,尤其是内存泄露.使用未初始化的局部变量进行跳转或移动等隐形问题.要求程序员养成良好的编码习惯确实很重要,但是人总会出现稀 ...
- LINUX中的DNS服务---DNS正向、反向和双向解析
一.DNS的正向解析 也就是域名解析为IP地址进行访问! 1)vim /etc/named.conf ----> 删除forwarders所在行 2)vim /etc/named.rf ...
- Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析
Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936 XEN 与 VMware ESXi,Hyper-V 以及 K ...
- 使用treemap 遍历map参数
遍历格式 XXX=123&XXX=456.....参数为map treemap是一个有序的key-value集合,它是通过红黑树实现的 TreeMap<String, String> ...