leecode记录

Mr-Nange 2020-03-26 09:06:35
1、求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
------------使用递归的思路。
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这是基础语言特性,60、70年代的语言都支持

青蛙工作室 2020-04-01
  • 打赏
  • 举报
回复
楼主是来考人的?看题目只是理解为学生作业,却原来是要玩一些奇技淫巧。 楼主举的短路特性,虽然在C++可行,但别的没有短路设计的语言是行不通的。
Mr-Nange 2020-03-28
  • 打赏
  • 举报
回复
无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。 示例1: 输入:S = "qwe" 输出:["qwe", "qew", "wqe", "weq", "ewq", "eqw"] 示例2: 输入:S = "ab" 输出:["ab", "ba"] 提示: 字符都是英文字母。 字符串长度在[1, 9]之间。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/permutation-i-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 使用回溯法
Mr-Nange 2020-03-27
  • 打赏
  • 举报
回复
引用 3 楼 青蛙工作室 的回复:
递归怎么可能不用条件判断语句 ?那如何判断何时结束递归? 通常递归函数是这么写的:

 int sum(int n) 
 {
   static int x=0;
   if(n==1) return x+1;
   x+=n;
   return sum(n-1);
 }
利用短路特性。参考一种解题思路 int sumNums(int n){ int sum = n; n && (sum += sumNums(n-1)); return sum; } n && (sum += sumNums(n-1));当判断n > 0 且(sum > 0)那么就执行sum += sumNums(n-1)继续递归,相当于if语句if(n > 0) sum += sumNums(n-1),如果n < 0,那么就不再继续判断sume的值,而是返回,相当于else return sum 作者:shi-qi-chan-yi-shao-nian 链接:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/cdi-gui-de-jian-dan-xie-fa-bu-yong-cheng-chu-fa-if/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 作者:shi-qi-chan-yi-shao-nian 链接:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/cdi-gui-de-jian-dan-xie-fa-bu-yong-cheng-chu-fa-if/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
青蛙工作室 2020-03-27
  • 打赏
  • 举报
回复
递归怎么可能不用条件判断语句 ?那如何判断何时结束递归? 通常递归函数是这么写的:

 int sum(int n) 
 {
   static int x=0;
   if(n==1) return x+1;
   x+=n;
   return sum(n-1);
 }
Mr-Nange 2020-03-27
  • 打赏
  • 举报
回复
在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。 最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。 建筑物高度可以增加的最大总和是多少? 例子: 输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]] 输出: 35 解释: The grid is: [ [3, 0, 8, 4], [2, 4, 5, 7], [9, 2, 6, 3], [0, 3, 1, 0] ] 从数组竖直方向(即顶部,底部)看“天际线”是:[9, 4, 8, 7] 从水平水平方向(即左侧,右侧)看“天际线”是:[8, 7, 9, 3] 在不影响天际线的情况下对建筑物进行增高后,新数组如下: gridNew = [ [8, 4, 8, 7], [7, 4, 7, 7], [9, 4, 8, 7], [3, 3, 3, 3] ] 说明: 1 < grid.length = grid[0].length <= 50。  grid[i][j] 的高度范围是: [0, 100]。 一座建筑物占据一个grid[i][j]:换言之,它们是 1 x 1 x grid[i][j] 的长方体。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 计算出每行的最大值和每列的最大值,遍历时,每一个建筑物增加到的最大高度为该元素行天际线与列天际线高度的较小值。 时间复杂度 O(n2),空间复杂度(O(N))
Mr-Nange 2020-03-26
  • 打赏
  • 举报
回复
2、 编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。 巧用异或。 a = a ^b b = a ^ b (即 a ^ b ^ b = a) a = a^b (即a ^ b ^ a = b)

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧