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的更多相关文章

  1. Codility NumberSolitaire Solution

    1.题目: A game for one player is played on a board consisting of N consecutive squares, numbered from ...

  2. codility flags solution

    How to solve this HARD issue 1. Problem: A non-empty zero-indexed array A consisting of N integers i ...

  3. GenomicRangeQuery /codility/ preFix sums

    首先上题目: A DNA sequence can be represented as a string consisting of the letters A, C, G and T, which ...

  4. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  5. 使用 Arrays 类操作 Java 中的数组

    Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等(关于类和方法的相关内容在后面的章节中会详细讲解滴 ...

  6. 【转】java.util.Arrays.asList 的用法

    DK 1.4对java.util.Arrays.asList的定义,函数参数是Object[].所以,在1.4中asList()并不支持基本类型的数组作参数. JDK 1.5中,java.util.A ...

  7. System.arraycopy()和Arrays.copyOf()的区别

    先看看System.arraycopy()的声明: public static native void arraycopy(Object src,int srcPos, Object dest, in ...

  8. 计算机程序的思维逻辑 (31) - 剖析Arrays

    数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...

  9. 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 ...

  10. [LeetCode] Intersection of Two Arrays II 两个数组相交之二

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

随机推荐

  1. [nodejs]解决mysql和连接池(pool)自动断开问题

    最近在做一个个人项目,数据库尝试使用了mongodb.sqlite和mysql.分享一下关于mysql的连接池用法.项目部署于appfog,项目中我使用连接池链接数据库,本地测试一切正常.上线以后,经 ...

  2. IOS-源代码管理工具(Git)

    一.简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Benedict ...

  3. Python 脚本注册为Windows Service

    这部分内容就如同标题所讲的,其他的也不说了,直接上代码吧 需要说明的是,此代码在我的Win10 下可以正常使用,而在windows server 2008没有运行成功. 如果出现拒绝访问的错误,请使用 ...

  4. 【Error】:10061由于目标计算机积极拒绝,无法连接

    之前Windows上连接mongodb的时候首先用mongod.exe启动程序之后,用mongo.exe来连接数据库.但是在连接的时候,出现如下错误: error:10061 由于目标计算机积极拒绝, ...

  5. datagrid与DropDownList关联使用

    最近做一个页面需要用到这个两个控件,之前虽然看过,但是没有动手实践过.突然要做这么一个页面,并用上,真的有点着急.于是乎,网上疯狂找datagrid与DropDownList 的例子,找了很多很多,看 ...

  6. Algorithm2: 重复查过半数的元素

    数组中,有一个元素的值在数组中重复的个数是超过一半,获得元素超过一半的元素值 int MoreThanHalfNumber(int * arr, int n){                  in ...

  7. 利用Docker编译Hadoop 3.1.0

    前言 为什么要使用Docker编译,请自行百度 操作系统环境:Centos 6.8 uname -r 内核版本:2.6.32-642.el6.x86_64 除非有把握否则不要在Centos6.8中直接 ...

  8. redis在.net架构中的应用(1)--利用servicestack连接redis

    引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...

  9. django-pymysql-封装的sql使用

    封装的sql import pymysql def get_list(sql,args): conn = pymysql.connect(host=, user='root', passwd='', ...

  10. root用户下使用sqlplus登录Oracle数据库

    1.把环境变量添加到root用户的环境变量里面2.执行 chmod -R 6777 /tmp           chmod -R 6777 /usr/tmp           chmod -R 6 ...