自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 LeetCode——2的幂

题目描述:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。代码如下:        public bool IsPowerOfTwo1(int n) { return n > 0 && (n & (n - 1)) == 0; } public bool IsPowerOfTwo2(int ...

2018-07-11 22:52:50 390

原创 LeetCode——翻转二叉树

题目描述:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1思路:使用队列进行一次深度遍历,每次将队列头节点的左右子树交换,直到队列为空。代码如下:public TreeNode InvertTree(TreeNode root...

2018-07-11 22:07:57 252

原创 LeetCode——用队列实现栈

题目描述:使用队列实现栈的下列操作:    push(x) -- 元素 x 入栈    pop() -- 移除栈顶元素    top() -- 获取栈顶元素    empty() -- 返回栈是否为空    注意:        你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。     ...

2018-07-10 21:04:22 661

原创 LeetCode——计数质数

问题描述:统计所有小于非负整数 n 的质数的数量。思路:大于2的偶数都不是质数,所以我们只需要判断奇数是不是质数。代码如下:public int CountPrimes(int n) { if(n<3) return 0; int count=n/2; bool[] f=new bool[n]; for(...

2018-06-25 14:20:31 317

原创 LeetCode——删除链表中的节点

问题描述:删除链表中等于给定值 val 的所有节点。思路:使用三个引用保存当前节点,前一个节点,后一个节点。要考虑到删除的节点是头节点、尾节点、中间节点,删除后链表为空这些情况。代码如下:public ListNode RemoveElements(ListNode head, int val) { while(head!=null && head.val==val...

2018-06-25 13:49:23 682

原创 LeetCode——快乐数

问题描述:编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。思路:将数替换为它每个位置上的数字的平方和,这个比较好实现,先取余10,再除以10。什么时候会循环呢?出现了之前出现的数,这个可以使用hashset来进行...

2018-06-25 13:41:57 843 3

原创 LeetCode——打家劫舍

问题描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。思路:这是一个求最优解的问题,使用动态规划。使用dp[i]表示第i间房屋能够偷窃到的最高金额,numa[i]...

2018-06-25 13:29:13 2402

原创 LeetCode——存在重复元素 II

题目描述:给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。解题思路:可以参考存在重复元素 I的解法,只需要改动一下。只取nums中相连的k个数尝试添加进hashset中,所以还要判断k与nums.Length的关系,具体代码如下:public bool ContainsNearby...

2018-06-23 13:01:16 250

原创 LeetCode——旋转数组

问题描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。解法一:将下标为i的元素放在下标i+k处,再将下标i+k处的元素放置在正确位置,以此类推(AC),时间复杂度:O(n),空间复杂度:O(1),代码如下:private static void Rotate1(int[] nums,int k) { if (k == 0) ...

2018-06-11 11:39:14 654

原创 Unity—实现鼠标拖拽

鼠标拖拽好像只能用于UI对象,暂时好像是这样的,如有误,我后面会更新。一:NGUI实现    NGUI的更简单,只需直接覆写OnDragRelease()方法//拖拽结束时调用protected override void OnDragDropRelease(GameObject surface){}什么都不用写就实现了拖拽。二、UGUI实现    UGUI需要实现对应的接口,以及自己更新U...

2018-05-30 11:40:55 2564

原创 Unity—背包系统(思路总括)

        这个背包系统我是跟着视频(黑暗之光)用NGUI做的,假如后面有时间的话我会自己用UGUI做一个。        大概介绍一下效果吧:按键模拟拾取物品,物品会放在背包的方格中,显示物品数量,鼠标移到物品上会显示物品信息,实现拖拽(判定拖拽到的位置)。 大概思路如下:1、搭建背包UI(手动搭建)2、使用txt文件存储物品信息(注意各项存储顺序)3、创建脚本从txt文件中读取物品信息4、...

2018-05-30 08:50:53 4186

原创 详解Victor3.Lerp

Linearly interpolates between two vectors.Interpolates between the vectors a and b by the interpolant t. The parameter t is clamped to the range [0, 1]. This is most commonly used to find a point some fraction of the way along a line between two endpoint

2018-05-22 11:43:46 328

原创 四种移动到目标位置的方式(物体与UI界面皆可)

第一种:使用Vector3.MoveTowardstransform.localPosition = Vector3.MoveTowards(start, end, speed * Time.deltaTime);假如移动的是界面的话,设置为localPosition,物体则为Position。第二种:使用数学插值移动float step = speed * Time.deltaTime;tra...

2018-05-22 11:21:35 5220

原创 剑指Offer——合并数组

题目描述:有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。请实现一个函数,把A2中的所有数字插入A1中,并且所有数字是排序的。分析:因为两个数组都已经排序了,切A1的末尾有足够的空间,那我们就从末尾这个角度来解。从A1和A2的末尾开始比较,将更大的放在A1容量的末尾,然后向前扫描。因为是用c#写,所以我是重新声明了一个数组来存储A1和A2的值。代码如下:private st...

2018-05-08 17:16:05 178

原创 剑指Offer——替换空格

题目描述:请实现一个函数,把字符串中的每个空格替换成"%20"。分析:首先,要将字符串转换成字符数组,再进行替换。不过在c#中,数组一旦初始化了,就无法再改变存储空间的大小,所以我用了两个字符数组。然后怎么替换呢?可以扫描到空格后将后面的字符后移,然后进行替换,这样时间复杂度为O(n^2)。有没有时间复杂度为O(n)的方法呢?我们可以试一下从后往前扫描会怎么样。先扫描一遍,获取空格的数量,然后分配...

2018-05-08 16:47:35 119

原创 剑指Offer——二维数组中的查找

题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:笨方法是将二维数组转为一维数组,再去判断,但这样性能很差,既耗时又耗空间。仔细分析问题,提供的二维数组是有规律的,每一行从左到右递增,每一列从上到下递增,那么,假如一行末尾的数小于它,则那一行的数都小于它,一列开头的数...

2018-05-08 16:29:44 99

原创 剑指Offer——不修改数组找出重复的数字

题目描述:在一个长度为n+1的数组里所有数字都在1~n的范围内,所以数组中至少有一个数是重复的。请找出数组中任意一个重复的数,但不能修改输入的数组。分析:重复的数一定在某范围内,我们可以逐渐缩小范围,直到找到重复的数。代码如下:public sealed class ErfenAndFind { public static int one = -1; pub...

2018-05-08 16:15:19 200

原创 剑指Offer——数组中重复的数字

题目描述:在一个长度为n的数组里所有数字都在0~n-1范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。分析:解法一:先排序,再找出重复的数字,可以找出所有重复的数字。代码如下:public sealed class SortAndFind { //快排的单元排序 private stati...

2018-05-08 16:07:22 159

原创 剑指Offer——从尾到头打印链表

题目描述:输入一个链表的头结点,从尾到头反过来打印出每个节点的值。分析:从尾到头打印,那就是先进后出,根据这个可以想想能不能用栈实现,这个是可以的。先按顺序把节点的值入栈,所有值入栈之后再出栈,直到栈为空。除了使用栈之外还有什么方法吗?有的,还有一个和栈类似,那就是递归,递归在本质上就是一个栈结构,所以就有两种解法。代码如下:声明节点对象,并提供必要的方法:class ListNode {...

2018-05-08 15:35:35 264

转载 Unity发布Android版本

先大概说一下我自己的经历吧,总的大概用了10小时吧。刚开始装的是jre和Android stdio,然后发现要装的是JDK和SDK,然后去装JDK和SDK,装JDK很顺利,装SDK失败了,原因未知。后面是用 Android stdio装的SDK。最后发布的时候又踩了一些坑,好吧,这些是给自己看的。下面划重点了:1、要装的是JDK和SDK,而不是Jre和Android stdio,装JDK的时候会一...

2018-05-08 11:13:26 21060 4

原创 剑指Offer——实现单例模式

题目:设计一个类,我们只能生成该类的一个实例。解法一:只适用于单线程代码如下:public sealed class SingleTon1 { public static void Print() { Console.WriteLine("Singleton1 print"); } private ...

2018-05-06 14:46:20 196

原创 希尔排序

思路:首先选取一个增量d(类似等差数列的公差),一般先设为array.Length/2,将数组中距离为d的数据分到同一个组中,由此分为多个组,在每组进行直接插入排序;然后d递减,再分为多个组,再在每组进行直接插入排序,直到d=1。希尔排序相对于插入排序的优点在于:每次比较的数的距离更大,比较之后移动的距离更大,减少了复制的次数,而且由于最后d=1,此时相当于对整个数组进行插入排序,所以排序结果一定...

2018-05-03 11:42:26 77

原创 插入排序

思路:每次都与前面的一个数比,若更小,则将两数的位置交换,直到前面的数比它小。依次循环,直到最后一个数排好。时间复杂度:O(n^2)。代码如下:static void Main(string[] args) { int[] array = { 36, 2, 15, 48, 26, 73, 14, 55 }; InsertSort(ar...

2018-04-30 22:04:32 59

原创 选择排序

思路:每次把未排序序列中最小的数放在最前面,直到未排序序列为空,即,每次把最小的数找出来。时间复杂度:O(n^2)。代码如下:static void Main(string[] args) { int[] array = { 3, 45, 26, 18, 24, 37, 89, 6 }; Sort(array); ...

2018-04-30 20:02:52 98

原创 快速排序

单元排序(一次快速排序):key=array[0],low=0,high=array.length-1;若array[high]<key,则把array[high]移到key的左边,即array[low]=array[high],同理,若array[low]>key,则把array[low]移到key的右边,即array[high]=array[low],直到low>=high,...

2018-04-30 19:09:41 80

原创 冒泡排序

思路:排序后的数组从小到大排列,每次相邻的两个数比较,把更大的数后移,每次都会得出未排序部分中最大的数。语句的总执行次数为a1=n,d=1的等差数列的和,所以时间复杂度为:O(n^2)。代码如下:public static int[] BubbleSort(int[] nums) { for(int i=0;i<nums.Length-1;i++) ...

2018-04-28 19:52:10 87

原创 LeetCode 03 Two_Sum_III___Data_structure_design

问题:Design and implement a TwoSum class. It should support the following operations:add and find.add - Add the number to an internal data structure.find - Find if there exists any pair of numbers which...

2018-04-28 19:01:49 123

原创 LeetCode 02 两数之和 II - 输入有序数组

题目:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target =...

2018-04-28 16:04:58 242

原创 详细区分类继承的各种形式

在继承中有new、override、构造函数等等不同的形式,这篇文章就是为了区分在这些情况下调用的到底是哪个类的什么方法,加深对类继承的理解。长文阅读,大部分是代码。new、override是对类中的成员使用的,这里以方法示例,其它成员如字段也是一样的。第一种:在子类中写一个名字相同的方法,既不用new,又不用overrideclass BaseClass { public...

2018-04-27 23:07:38 251

原创 LeetCode 01 两数之和

题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]Main方法如下:static void Main(string[] args) {...

2018-04-27 22:12:27 128

转载 枚举类型和位标志

一、枚举类型  枚举类型(enumerated types)定义了一组"符号名称/值"配对。  例如,以下Color类型定义了一组符号,每个符号都标识一种颜色:internal enum Color {While, //赋值0Red, //赋值1Green, //赋值2Blue, //赋值3Orange

2017-10-09 15:59:21 1702

转载 unity小技巧

1、编辑时镜头跟随选中物件:在Scene界面中选中物件按F,镜头就会对准选中物件,并使其在Scene窗口中居中,如果在拖动物件时,要让镜头跟随物件移动,选中物体后按Shift+F即可。2、Unity死机未保存场景:当你在Unity中编辑场景,突然死机时,可以在项目文件目录中找到Temp文件夹,双击文件夹,找到_Backupscenes文件夹,把后缀为.backup的文件后缀改为.unity,然

2017-10-07 21:43:59 301

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除