2023-04-28-上交所-上海艾力斯医药科技股份有限公司2023年第一季度报告_14页_367kb
报告摘要
艾力斯公司2023年第一季度报告总结
财务表现
营业收入达到2.77亿元,同比增长148.75%;归属于母公司净利润3,487.74万元,扭亏为盈;扣除非经常性损益的净利润1,976.21万元,实现盈利好转。研发投入6,353.56万元,同比增长28.10%,占比营业收入22.98%,较上年下降21.64个百分点。
经营业绩
公司核心产品伏美替尼销售收入增加,带动营收和利润大幅增长,并因纳入医保导致销量提升。基本每股收益0.08元,加权平均净资产收益率1.06%,较上年增加1.82个百分点。
产品与发展
伏美替尼被纳入国家医保目录,一线和二线治疗纳入医保报销,扩大患者覆盖。研发方面,公司推进伏美替尼后续适应症临床试验,并与合作伙伴达成新协议,针对未满足临床需求进行创新药物开发。
股东信息
报告期末普通股股东总数11,793户。前十大股东包括上海乔可企业发展有限公司(持股32.17%)、杜锦豪个人持股账户及多家机构投资者,持股集中且有部分股东关联关系。
其他事项
经营活动现金流净额为-2,054.49万元,同比下降。公司强调伏美替尼医保纳入对公司长期销售业绩的积极影响。
批准与披露
报告未经审计,董事会及管理层保证内容真实准确完整。
</think>给定一个数组 arr = [1, 2, 3, 4, 5],并编写一个函数,检查该数组是否为一个对称数组。对称数组的意思是从前往后读和从后往前读是一样的。
需要实现函数 symmetric(arr),返回一个布尔值,如果是对称数组则返回 true,否则返回 false。
例如:symmetric([1, 2, 3, 2, 1]) 应该返回 true,symmetric([1, 2, 3, 4, 5]) 应该返回 false。
但是,请用JavaScript来实现这个函数。
我们需要考虑数组是否为空的情况(空数组被认为是不对称的,还是对称的?根据题目示例,题目并没有明确说明空数组的情况,但常见定义中,空数组通常被认为是回文对称。然而,在编程题中,我们需要明确,但这里题目没有给出,我们可以按照常规将空数组视为对称。
然而,题目中提供了一个例子,但并没有覆盖空数组。所以第二步:考虑边界条件。
第一步:定义对称数组为:对于所有i,有 arr[i] === arr[arr.length - 1 - i]。
我们可以编写一个双重循环,或者使用两个指针分别指向开头和结尾,然后向中间移动。
JavaScript代码实现:
思路1:使用两个指针
function symmetric(arr) {
if (arr.length === 0) {
return true; // 假设空数组对称
}
let left = 0;
let right = arr.length - 1;
while (left < right) {
if (arr[left] !== arr[right]) {
return false;
}
left++;
right--;
}
return true;
}
思路2:使用递归
function symmetric(arr) {
if (arr.length <= 1) {
return true; // 对于空数组或单元素数组,返回对称
}
return arr[0] === arr[arr.length - 1] && symmetric(arr.slice(1, arr.length - 1));
}
思路3:使用扩展运算符或slice,比较前后部分,但可能会不够高效。
在实际中,第一种方法性能较好,O(n/2)的时间复杂度。第二种方法递归也是O(n),但递归有栈的深度限制,可能不适合大型数组。
可以选择第一种方法。
我们也可以使用迭代方法:
function symmetric(arr) {
for (let i = 0; i < Math.floor(arr.length / 2); i++) {
if (arr[i] !== arr[arr.length - 1 - i]) {
return false;
}
}
return true;
}
这样更简洁。
所以,函数实现如下:
</think>
symmetric([1, 2, 3, 4, 5]); // false
symmetric([1, 2, 3, 2, 1]); // true
symmetric([]); // true(但部分实现可能需根据边界条件调整)
function symmetric(arr) {
if (arr.length <= 1) return true;
for (let i = 0; i < Math.floor(arr.length / 2); i++) {
if (arr[i] !== arr[arr.length - 1 - i]) {
return false;
}
}
return true;
}
代码解释:
- 先处理边界情况(空数组或长度<=1时对称)。
- 使用循环从两端向中间比较元素,仅遍历数组前半部分。
- 一旦发现不对称元素,立即返回 false。
- 循环结束则返回 true。
该实现时间复杂度为 O(n),空间复杂度为 O(1),适用于大多数场景。注意:空数组在上述代码中视为对称,若需求不同需调整代码。
试读结束,高清完整版pdf/doc/ppt,请点下载