array

9.代码的完整性

ぃ、小莉子 提交于 2019-12-12 10:46:06
题一:【数值的整数次方】 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。 分析:大力出奇迹:注意exponent大于0小于0的情况 1 import java.lang.Math; 2 public class Solution { 3 public double Power(double base, int exponent) { 4 if(exponent==0) return 1; 5 if(base==0) return 0; 6 double res = 1; 7 for(int i=1;i<=Math.abs(exponent);i++){ 8 res = base*res; 9 } 10 if(exponent>=0){ 11 return res; 12 }else{ 13 return 1/res; 14 } 15 } 16 } 题二:【调整数组顺序使奇数位于偶数前面】 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 分析:   ①定义oddIndex和evenIndex两个值,分别对应后面奇数和第一个偶数的索引。   ②遍历数组

插入排序代码分析

南楼画角 提交于 2019-12-12 00:30:37
直接插入排序 JavaScript 实现代码: 123456789101112131415161718192021222324 function insertionSort(array) { //自定义函数,交换i和j的位置 function swap(array, i, j) { var temp = array[i]; array[i] = array[j]; array[j] = temp; } var length = array.length, i,//从第二项开始,与前一项作比较 j;//为了往前进行比较 for (i = 1; i < length; i++) { for (j = i; j > 0; j--) { //从第j项开始,与前一项比较大小,如果前项大于后项,则交换位置;如果前项小于等于后项,说明当前排序完成,跳出当前循环,i++进行下一项比较,直到最后一项。 if (array[j - 1] > array[j]) { swap(array, j - 1, j); } else { break; } } } return array; } 直接插入排序 JavaScript 实现代码,减少交换次数: 123456789101112131415161718 function insertionSort(array) { var length = array

如何随机化(随机播放)JavaScript数组?

跟風遠走 提交于 2019-12-11 19:26:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我有一个像这样的数组: var arr1 = ["a", "b", "c", "d"]; 如何随机/随机播放? #1楼 一个人可以(或应该)将其用作Array的原型: 来自ChristopheD: Array.prototype.shuffle = function() { var i = this.length, j, temp; if ( i == 0 ) return this; while ( --i ) { j = Math.floor( Math.random() * ( i + 1 ) ); temp = this[i]; this[i] = this[j]; this[j] = temp; } return this; } #2楼 这是 Durstenfeld shuffle 的JavaScript实现, Durstenfeld shuffle 是Fisher-Yates的计算机优化版本: /** * Randomize array element order in-place. * Using Durstenfeld shuffle algorithm. */ function shuffleArray(array) { for (var i = array.length - 1; i > 0

算法学习之数组中的逆序对

梦想与她 提交于 2019-12-11 04:23:28
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,size<=2*10^5 示例1 输入 1,2,3,4,5,6,7,0 输出 7 思路,如果我们暴力一点,可以直接嵌套双遍历进行获取个数就完事了,可是这样,每次都拿出一个数跟其他比较,复杂度太大:n^2。所以这里使用了小套路:归并排序。现将数组分解成单个元素,然后两个相邻的进行比较,如果前边的打则符合条件,我们进行计数,并进行排序,防止下次重复计数。然后比较同一组的另外相邻的两个元素,同理。最后比较已两个为基本单位的两个组合,进行混合比较同时计数和排序。说起来可能有点蒙,这里为了方便理解盗了张图。这样至少节省了一般以上的时间成本。 import java.util.*; public class Solution { int count = 0; public int InversePairs(int [] array) { mergeSort(array,0,array.length-1); return

Dex替换

牧云@^-^@ 提交于 2019-12-11 00:53:39
/** * dex注入,优先使用自定义dex中的类 * * @param path * @param base */ private void InjectDex ( String path , Context base ) { //添加自定义加载路径 //思路:获取类加载路径表,将自己的插在最前面 try { Field pathListField = BaseDexClassLoader . class . getDeclaredField ( "pathList" ) ; pathListField . setAccessible ( true ) ; Field dexElementsField = Class . forName ( "dalvik.system.DexPathList" ) . getDeclaredField ( "dexElements" ) ; dexElementsField . setAccessible ( true ) ; Object pElements = dexElementsField . get ( pathListField . get ( base . getClassLoader ( ) ) ) ; //关键点1,生成自定义dexElements Object dElements = dexElementsField .

剑指Offer-36.数字在排序数组中出现的次数(C++/Java)

僤鯓⒐⒋嵵緔 提交于 2019-12-10 23:29:21
题目: 统计一个数字在排序数组中出现的次数。 分析: 给定一个已经排好序的数组,统计一个数字在数组中出现的次数。 那么最先想到的可以遍历数组统计出现的次数,不过题目给了排序数组,那么一定是利用了排序这个性质来缩减时间复杂度的。 因为如果所给的数字在数组中出现,那么这个数字在数组中一定是连续的,那么可以利用二分查找所给出的数字的首尾索引。 程序: C++ class Solution { public: int GetNumberOfK(vector<int> data ,int k) { if(data.size() == 0){ return 0; } int l = FindFirst(data, k, 0, data.size()-1); int r = FindEnd(data, k, 0, data.size()-1); if(r != -1 && l != -1) return r-l+1; else return 0; } int FindFirst(vector<int> &data ,int k, int left, int right){ if(left > right) return -1; int mid = left + (right - left) / 2; if(data[mid] == k){ if((mid > 0 && data[mid-1] !

js的一些总结

北城余情 提交于 2019-12-10 15:18:17
最近突然发现之前写得好多代码都是一坨屎啊== 比如在数组中我使用(for .. in)去遍历,才发现自己的一些错误,在vue页面中使用了json.parse的类似操作。。 以后要好好的学习啊,不能再犯一些低级小错误了。 一、数组常见的15种操作 1.遍历数组 (1)方法一: for...of循环 const numbers = [1, 3, 5]; for (const num of numbers) { console.log(num); } // 1 // 3 // 5 可以使用 break 语句可以停止遍历 (2)方法二: for循环 const numbers = [1, 3, 5]; for (let i; i < numbers.length; i++) { console.log(numbers); } // 1 // 3 // 5 可以随时使用 break 语句停止遍历。 (3)方法三: array.forEach()方法 array.forEach(callback) 方法通过在每个数组项上调用 callback 函数来遍历数组项。 在每次遍历中,都使用以下参数调用 callback(item [, index [, array]]) :当前遍历项,当前遍历索引和数组本身。 const numbers = [1, 3, 5]; numbers.forEach

js数组去重大全,推荐收藏

给你一囗甜甜゛ 提交于 2019-12-10 11:41:54
情境: 将数组var arr = [1,1,‘true’,‘true’,true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,‘NaN’, 0, 0, ‘a’, ‘a’,{},{}];中重复的值过滤掉 1、 ES6-set 使用ES6中的set是最简单的去重方法 var arr = [ 1 , 1 , 'true' , 'true' , true , true , 15 , 15 , false , false , undefined , undefined , null , null , NaN , NaN , 'NaN' , 0 , 0 , 'a' , 'a' , { } , { } ] ; function arr_unique1 ( arr ) { return [ ... new Set ( arr ) ] ; //或者 //return Array.from(new Set(arr)); } arr_unique1 ( arr ) ; // (13)[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {…}, {…}] 该方法可以说是最完美的方法,就是需要环境支持ES6 2、利用Map数据结构去重

数组中出现次数超过一半的数字

折月煮酒 提交于 2019-12-10 11:14:24
数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 题目解析 题目中要求找到某一个超过数组长度一半的数字,即是需要我们找到一个数字的在数组中出现的次数是在当前数组中出现次数最多的。所以我们可以分以下几步来: 1、记录两个值,一个是数组中一个数字,一是次数,然后遍历数组,如果数组当前位置的值等于这个数字 ,次数加一,否则减一,如果次数等于0时,则将当前值赋值给当前数字,并将次数置为1。最后统计得到的就是在当前数组中出现次数最多的数字。 2、遍历当前数组,统计当前数字在当前数组中出现的次数。 3、判断当前数字出现的次数是不是大于当前数组的长度的一半 代码 public class Solution { public int MoreThanHalfNum_Solution(int [] array) { if(array == null || array.length == 0){ return 0; } int count = 1;//某一个数字出现的次数 int number = array[0];//统计次数的数字 for(int i = 0 ;i < array.length ;

thinkphp中where方法

情到浓时终转凉″ 提交于 2019-12-10 04:25:10
今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置。 where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。 字符串条件 使用字符串条件直接查询和操作,例如: $User = M("User"); // 实例化User对象 $User->where('type=1 AND status=1')->select(); 最后生成的SQL语句是 SELECT * FROM think_user WHERE type=1 AND status=1 如果使用3.1以上版本的话,使用字符串条件的时候,建议配合预处理机制,确保更加安全,例如: $Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select(); 或者使用: $Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select(); 如果