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. nginx和php-fpm的启停和配置

    一.nginx的启停 (1) 启动nginx /etc/init.d/nginx start (2) 停止nginx /etc/init.d/nginx stop (3) 重启nginx /etc/i ...

  2. Python中实现switchcase

    # 第一种方式使用python中的字典# author:wanstack def first_func(): print('first_func') def second_func(): print( ...

  3. C#学习历程(五)[高阶概念]

    >>修饰符的访问权限 private : 私有成员, 在类的内部才可以访问. protected: 保护成员,该类内部和继承类中可以访问. public: 公共成员,完全公开,没有访问限制 ...

  4. 【LeetCode 88_数组】Merge Sorted Array

    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { ; ; ; &&a ...

  5. SQL2008R2 收缩数据库问题 - 日志文件不变小

    数据库的日志文件(*.ldf)越来越大,怎么办? 收缩吧.收缩日志文件的操作真不简单哟,还跟数据库的恢复模式有关啊. 一.“简单恢复模式”时的日志收缩 1. 截断日志 当数据库的恢复模式为“简单”的时 ...

  6. LINUX中的DNS服务---高速缓存DNS

    一.什么是DNS     Domain Name System,域名系统.     万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网.他主要负责把域名和IP的相互转换 ...

  7. Linux:网络配置

    网络配置 1.网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2 HWADDR=00:0C:29:93:41:2B 3 ...

  8. Linux:tee命令详解

    tee tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin,简单的说就是把数据重定向到给定文件和屏幕上. 语法 tee(选项)(参数) 选项 -a:向文件 ...

  9. CUDA Samples: Julia

    以下CUDA sample是分别用C++和CUDA实现的绘制Julia集曲线,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第四章,各个文件内 ...

  10. Softmax 函数的特点和作用

    ---------- 因为这里不太方便编辑公式,所以很多公式推导的细节都已经略去了,如果对相关数学表述感兴趣的话,请戳这里的链接Softmax的理解与应用 - superCally的专栏 - 博客频道 ...