left函数

JavaScript版《剑指offer》刷题(27)

匿名 (未验证) 提交于 2019-12-02 21:52:03
1.题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 2.题目分析 思路一:暴力枚举 先排序,然后找出中间的值,复杂的O(nlogn) 思路二:利用O(n)的空间,换取时间复杂度O(n) 基于快排思想中的partition函数来做,因为根据题目,那么排序后的数组中间的数就是那个出现次数超过一半的数,那么我只需要利用快排中的partition,找到长度为n的数组中间n/2大的那个数就行。 我们有成熟的时间复杂度为的算法得到数组中任意第k大的数字。只不过现在的K值为数组长度的一半。 思路三:利用这个数组的特性,保存两个值,一个是数组中的数字,另一个是次数。 根据数组特点来做,数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现的次数的和还要多。因此,我们可以考虑在遍历数组的时候保存两个值:一个是数组中的一个数字;一个是次数。当我们便利到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1;如果下一个数字和我们之前保存的数字不同,则次数减1.如果次数为零,那我们需要保存下一个数字,并把次数设为1.由于我们要找的数字出现的次数比其他所有数字出现次数之和还要多

SQL Server中的LEFT、RIGHT函数

拟墨画扇 提交于 2019-12-02 21:42:11
SQL Server中的LEFT、RIGHT函数。 LEFT :返回字符串中从左边开始指定个数字符。 LEFT(character_expression,integer_expression); RIGTH :返回字符串从右边开始指定个数字符。 RIGHT(character_expression,integer_expression); 例: SELECT LEFT('abcedf',3) as leftResult; -- 返回从左侧数前 3 个字符,第二个参数不接收负数,会报错 SELECT RIGHT('abcedf',3) as rightResult; -- 返回从右侧数前 3 个字符 本文来自 木庄网络博客 > SQL Server中的LEFT、RIGHT函数 来源: https://www.cnblogs.com/muzhuang/p/11763509.html

Search Insert Position

被刻印的时光 ゝ 提交于 2019-12-02 06:13:20
这题直接用遍历的话时间复杂度也只有O(n),但是没必要,因为通过将二分查找法进行一定的修改就可以做到,二分查找法比直接遍历要更快。如果target存在于数组中,二分查找法找出来的下标返回即可;如果不存在于数组中,那么分为两种情况,一种是left等于right,这种情况在target比数组中最小值还小或者比数组中最大值还大的时候出现,这两种情况在函数一开始直接用if过滤掉就可以了;另一种情况就是left>right,这个时候通过写几个例子就可以发现应该要返回的是left。 代码如下: class Solution { public int searchInsert(int[] nums, int target) { if(nums[0]>target){ return 0; } if(nums[nums.length-1]<target){ return nums.length; } int left=0,right=nums.length-1; int mid=0,p=0; while(right>=left){ mid=left+(right-left)/2; if(nums[mid]<target){ left=mid+1; } else if(nums[mid]>target){ right=mid-1; } else{ p=mid; break; } } if(left

蠡口124. Binary Tree Maximum Path Sum

放肆的年华 提交于 2019-12-01 21:23:10
一开始拿到这道题,我就想着递归,思路如下:   left=maxPathSum(root.left)   right=maxPathSum(root.right)   但是怎么把左右两边递归的值联系起来呢?如果能求出每个从左到右经过root的path的和,那么,再跟左右递归的结果一比较就可以求得最大值。 根据以上思路,我们可以定义一个函数pathSum,该函数也是求path的和,但是这个path必须包含root节点,而且这个path最多只能包括path的左右孩子节点中的一个。为什么只能包含left和right其中之一呢?因为如果既能包含left,也能包含right,那么left的路径就可能从left.left拐到left.right,没法经过root。这样一来我们就可以求出左孩子、经过root,到右孩子这种path的值。如下图所示: 我们可以边递归边寻找最大值,但注意结果中要包含 Left -Root- Right 这样的路径的值,这样的值其实就是max(pathSum( Left ),0,pathSum( Right ),pathSum( Left )+pathSum( Right ))。代码如下: class Solution(object): ans=-2**31 def maxSum(self,root): if root==None: return(0) left

10.17 学习记录

邮差的信 提交于 2019-12-01 16:07:04
gcd int gcd(int a,int b){ return b ? gcd(b,a%b) : a; } //lcm(a,b)=a*b/gcd(a,b); //直接使用__gcd(a,b); 快速幂 int pow_mod(int a, int n, int m) { long long ans = 1; while(n){ if(n&1){ ans = (ans * a) % m; } a = (a * a) % m; n >>= 1; } return ans; } 进制转换      一般其他进制为 字符串,十进制为 整型    3.1 十进制 转 其他进制   思路:         把要转换的数,除以2( 或其他 ),得到商和余数,将商继续除以2( 或其他 ),直到商为0。最后将所有余数 倒序排列 ,得到数就是转换结果。         or 使用C++自带函数 _itoa (n ,str ,b ) ; //b为进制 #include<bits/stdc++.h> using namespace std; string itoA(int num,int radix){ string ans=""; do{ int t=num%radix; if(t>=0&&t<=9) ans+=t+'0'; else ans+=t-10+'A'; num/=radix; }while

排序算法进阶--排序算法优化

怎甘沉沦 提交于 2019-12-01 09:36:40
排序算法进阶 上篇文章中我们主要介绍了经典的八大排序算法,从算法思想,动图演示,代码实现,复杂度及稳定性分析等角度进行学习。还没阅读的童鞋可以点 这里 进行浏览。 求知若渴的你肯定不会满足于入门的内容,今天,小编在上一篇的基础上,对多种排序算法进行优化,让我们一起来康康吧~~ 0 1 冒泡排序 1. 优化一 优化思路 :优化外层循环,我们知道,冒泡排序的每一轮都会对未排序部分进行一次遍历,如果在某次循环中没有交换操作,就说明数组已经有序,不用继续排序。 实现代码 1 public static int[] bubbleSort(int[] array) { 2 if (array.length == 0) 3 return array; 4 for (int i = 0; i < array.length; i++){ 5 boolean isSwap = false;//标记是否已经有序 6 for (int j = 0; j < array.length - 1 - i; j++) 7 if (array[j + 1] < array[j]) { 8 int temp = array[j + 1]; 9 array[j + 1] = array[j]; 10 array[j] = temp; 11 isSwap = true; 12 } 13 if(!isSwap) 14

bzoj2187: fraction——类欧几里得

妖精的绣舞 提交于 2019-12-01 05:42:17
题意 多组询问,每次给出 $a, b, c, d$,求满足 $\frac{a}{b} < \frac{p}{q} < \frac{c}{d}$ 的所有二元组 $(p, q)$ 中 $p$ 为第一关键字,$q$ 为第二关键字排出来的字典序最小的那一对。 分析 设计函数 $f(a,b,p,q,c,d)$. 按照题目中保证 $q$ 最小的要求考虑该函数的几个边界: 1. $\left \lfloor \frac{a}{b} \right \rfloor-1 \leq \left \lceil \frac{c}{d} \right \rceil-1$,这个时候 $p = \left \lfloor \frac{a}{b} \right \rfloor+1, q=1$ 时字典序最小 2. $a=0$ 时,这个时候 $0 < \frac{p}{q} < \frac{c}{d} \Rightarrow q > \frac{dp}{c}$,显然 $p=1, q=\left \lfloor \frac{c}{d} \right \rfloor+1$ 时字典序最小 然后考虑辗转相除缩小问题规模: 1. $a > b\ or \ c > d$:原式等价于:$\frac{a\%b}{b} < \frac{p}{q}-\left \lfloor \frac{a}{b} \right \rfloor <

ATX uiautomator2 README 学习

旧巷老猫 提交于 2019-12-01 02:35:39
连接设备 有多种方式可以连接 wifi 首先要保证你的手机(10.0.0.1)和电脑在同一个局域网内 import uiautomator2 as u2d = u2.connect('10.0.0.1') # alias for u2.connect_wifi('10.0.0.1')print(d.info) usb usb通过设备号连接,可以通过 adb devices 查看 import uiautomator2 as u2d = u2.connect('123456f') # alias for u2.connect_usb('123456f')print(d.info) adb wifi import uiautomator2 as u2d = u2.connect_adb_wifi("10.0.0.1:5555")# Equals to # + Shell: adb connect 10.0.0.1:5555# + Python: u2.connect_usb("10.0.0.1:5555") 全局设置 里面包含一些 u2 全局设置的属性 Http debug >>> d.debug = True>>> d.info12:32:47.182 $ curl -X POST -d '{"jsonrpc": "2.0", "id":

[BZOJ3994] [SDOI2015]约数个数和

牧云@^-^@ 提交于 2019-12-01 01:02:46
首先有一个结论$d(i*j)=\sum \limits _{x\mid i} \sum \limits _{y\mid j}\left [ gcd(i,j)=1 \right ] $ 结论有点难想,不过之后就比较简单了。 $\sum \limits _{i=1}^{N}\sum \limits _{j=1}^{M} \sum \limits _{x\mid i} \sum \limits _{y\mid j}\left [ gcd(x,y)=1 \right ]$ $\sum \limits _{i=1}^{N} \sum \limits _{j=1}^{M} \sum \limits _{x\mid i}\sum \limits _{y\mid j}\sum \limits _{g\mid gcd(i,j)}u(g)$ $\sum \limits _{x=1}^{N}\sum \limits _{{i}'=1}^\left \lfloor \frac{N}{x} \right \rfloor \sum \limits _{y=1}^{M}\sum \limits _{{j}'=1}^{\left \lfloor \frac{M}{y} \right \rfloor}\sum \limits _{g\mid gcd(x,y)}u(g)$ $\sum \limits _{x=1}^

LeetCode 100. 相同的树

人盡茶涼 提交于 2019-11-30 16:57:55
题目链接: https://leetcode-cn.com/problems/same-tree/ 给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 输出: true 输出: false 输出: false 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * struct TreeNode *left; 6 * struct TreeNode *right; 7 * }; 8 */ 9 10 bool isSameTree(struct TreeNode* p, struct TreeNode* q){ 11 if(p==NULL&&q==NULL) return true; 12 else if(p&&q){ 13 if(p->val==q->val){ 14 return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); 15 } 16 else return false; 17 } 18 else return false; 19 } 来源: https://www.cnblogs.com/shixinzei/p